IGListKit/Source/IGListSwiftKit/IGListCollectionContext+Refinements.swift
Reyner Crosby 601de1b444 Silence string interpolation warning in IGListCollectionContext+Refinements.swift
Summary:
Silences warning:
```
Source/IGListSwiftKit/IGListCollectionContext+Refinements.swift:90:71: warning: string interpolation produces a debug description for an optional value; did you mean to make this explicit?
            fatalError("A nib named \"\(nibName)\" was not found in \(bundle)")
                                                                      ^~~~~~
Source/IGListSwiftKit/IGListCollectionContext+Refinements.swift:90:71: note: use 'String(describing:)' to silence this warning
            fatalError("A nib named \"\(nibName)\" was not found in \(bundle)")
                                                                      ^~~~~~
                                                                      String(describing:  )
Source/IGListSwiftKit/IGListCollectionContext+Refinements.swift:90:71: note: provide a default value to avoid this warning
            fatalError("A nib named \"\(nibName)\" was not found in \(bundle)")
                                                                      ^~~~~~
```

Reviewed By: natestedman

Differential Revision: D26320097

fbshipit-source-id: a5fa87fbe2cdf2ad8b55f985a904cf0d387debad
2021-02-08 13:18:47 -08:00

213 lines
7.1 KiB
Swift

/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import IGListKit
import UIKit
extension ListCollectionContext {
/**
Dequeues a cell from the collection view reuse pool.
- Parameters:
- reuseIdentifier: A reuse identifier for the specified cell. This parameter may be `nil`.
- sectionController: The section controller requesting this information.
- index: The index of the cell.
- Returns: A cell dequeued from the reuse pool or a newly created one.
*/
public func dequeueReusableCell<T: UICollectionViewCell>(
withReuseIdentifier reuseIdentifier: String,
for sectionController: ListSectionController,
at index: Int
) -> T {
guard let cell = self.dequeueReusableCell(
of: T.self,
withReuseIdentifier: reuseIdentifier,
for: sectionController,
at: index
) as? T else {
fatalError()
}
return cell
}
/**
Dequeues a cell from the collection view reuse pool.
- Parameters:
- sectionController: The section controller requesting this information.
- index: The index of the cell.
- Returns: A cell dequeued from the reuse pool or a newly created one.
- Note: This method uses a string representation of the cell class as the identifier.
*/
public func dequeueReusableCell<T: UICollectionViewCell>(
for sectionController: ListSectionController,
at index: Int
) -> T {
guard let cell = self.dequeueReusableCell(
of: T.self,
for: sectionController,
at: index
) as? T else {
fatalError()
}
return cell
}
/**
Dequeues a cell from the collection view reuse pool.
- Parameters:
- nibName: The name of the nib file.
- bundle: The bundle in which to search for the nib file. If `nil`, this method searches the main bundle.
- sectionController: The section controller requesting this information.
- index: The index of the cell.
- Returns: A cell dequeued from the reuse pool or a newly created one.
- Note: This method uses the nib name as the reuse identifier.
*/
public func dequeueReusableCell<T: UICollectionViewCell>(
withNibName nibName: String,
bundle: Bundle?,
for sectionController: ListSectionController,
at index: Int
) -> T {
guard let cell = self.dequeueReusableCell(
withNibName: nibName,
bundle: bundle,
for: sectionController,
at: index
) as? T else {
fatalError("A nib named \"\(nibName)\" was not found in \(String(describing:bundle))")
}
return cell
}
/**
Dequeues a storyboard prototype cell from the collection view reuse pool.
- Parameters:
- identifier: The identifier of the cell prototype in storyboard.
- sectionController: The section controller requesting this information.
- index: The index of the cell.
- Returns: A cell dequeued from the reuse pool or a newly created one.
*/
public func dequeueReusableCellFromStoryboard<T: UICollectionViewCell>(
withIdentifier reuseIdentifier: String,
for sectionController: ListSectionController,
at index: Int
) -> T {
guard let cell = self.dequeueReusableCellFromStoryboard(
withIdentifier: reuseIdentifier,
for: sectionController,
at: index
) as? T else {
fatalError("A cell with the identifier \"\(reuseIdentifier)\" was not found in the storyboard")
}
return cell
}
/**
Dequeues a supplementary view from the collection view reuse pool.
- Parameters:
- elementKind: The kind of supplementary view.
- sectionController: The section controller requesting this information.
- index: The index of the supplementary view.
- Returns: A supplementary view dequeued from the reuse pool or a newly created one.
- Note: This method uses a string representation of the view class and the kind as the identifier.
*/
public func dequeueReusableSupplementaryView<T: UICollectionReusableView>(
ofKind elementKind: String,
forSectionController sectionController: ListSectionController,
atIndex index: NSInteger
) -> T {
guard let supplementaryView = self.dequeueReusableSupplementaryView(
ofKind: elementKind,
for: sectionController,
class: T.self,
at: index
) as? T else {
fatalError()
}
return supplementaryView
}
/**
Dequeues a supplementary view from the collection view reuse pool.
- Parameters:
- elementKind: The kind of supplementary view.
- identifier: The identifier of the supplementary view in storyboard.
- sectionController: The section controller requesting this information.
- index: The index of the supplementary view.
- Returns: A supplementary view dequeued from the reuse pool or a newly created one.
*/
public func dequeueReusableSupplementaryViewFromStoryboard<T: UICollectionReusableView>(
ofKind elementKind: String,
withIdentifier identifier: String,
forSectionController sectionController: ListSectionController,
atIndex index: Int
) -> T {
guard let supplementaryView = self.dequeueReusableSupplementaryView(
fromStoryboardOfKind: elementKind,
withIdentifier: identifier,
for: sectionController,
at: index
) as? T else {
fatalError()
}
return supplementaryView
}
/**
Dequeues a supplementary view from the collection view reuse pool.
- Parameters:
- elementKind: The kind of supplementary view.
- sectionController: The section controller requesting this information.
- nibName: The name of the nib file.
- bundle: The bundle in which to search for the nib file. If `nil`, this method searches the main bundle.
- index: The index of the supplementary view.
- Returns: A supplementary view dequeued from the reuse pool or a newly created one.
- Note: This method uses the nib name as the reuse identifier.
*/
public func dequeueReusableSupplementaryView<T: UICollectionReusableView>(
ofKind elementKind: String,
forSectionController sectionController: ListSectionController,
nibName: String,
bundle: Bundle?,
atIndex index: Int
) -> T {
guard let supplementaryView = self.dequeueReusableSupplementaryView(
ofKind: elementKind,
for: sectionController,
nibName: nibName,
bundle: bundle,
at: index
) as? T else {
fatalError()
}
return supplementaryView
}
}