ios - 是否可以重用 cellForItemAtIndexPath :?

标签 ios swift

我有两个 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/

相关文章:

objective-c - 在应用程序崩溃或用户点击主退出按钮之前重新启用空闲计时器?

ios - 每天在本地通知iOS上在警报正文中设置随机消息的问题

ios - 如何使用蒙版裁剪 View ,但使裁剪掉的部分部分不透明而不是隐藏?

ios - 如何更改 UISwitch 的状态以使其显示在关闭位置?

ios - 总体设计——我应该在哪里放置集中访问的对象

objective-c - 尝试在 Swift 中实现 ObjectiveC 协议(protocol)

Swift 3.0 TapGesture 摆脱键盘且不干扰表格 View

ios - 将 UIView 的大小调整为其 UILabel subview 的大小

ios - 使用 Coredata 和 NSFetchRequest 进行 "IN"搜索时如何格式化 NSPredicate

swift - URLSession "hostname not found",但我在浏览器中看到它