我有两个 Collection View 。它们都使用相同的单元格布局,但出于其他原因,它们必须是单独的 Controller 。目前,当我更新 cellForItemAtIndexPath:
时,我必须将更改复制并粘贴到另一个。
有没有办法让我分离出这一种方法,以便我可以在一个地方进行更改并将它们反射(reflect)在两个 Controller 中?其中一个 Controller 是 UIViewController 子类。另一个是自定义 UIViewController 子类的子类。
最佳答案
您可以创建一个单独的数据源类,然后您可以将 collectionview 数据源链接到它。
你的数据源会是这样
class CollectionViewDataSource: NSObject, UICollectionViewDataSource {
var dataArray:[YourObjects]?
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return dataArray!.count ?? 0
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("YourCellIdentifier", forIndexPath: indexPath) as! UICollectionViewCell
return cell
}
}
你可以像这样在你的 Controller 中放置它
lazy var collectionViewDataSource: CollectionViewDataSource = {
return CollectionViewDataSource()
}()
@IBOutlet weak var collectionView: UICollectionView! {
didSet{
collectionViewDataSource.dataArray = //Your array
collectionView.dataSource = collectionViewDataSource
}
关于ios - 是否可以重用 cellForItemAtIndexPath :?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32373307/