【问题标题】:Reusing collectionView重用collectionView
【发布时间】:2016-05-26 19:37:51
【问题描述】:

我里面有 VC 和一个 collectionView。所有管理集合视图的代码我都放在了那个 VC 的扩展中。但现在我需要在另一个不同的 VC 中使用这个集合视图,我不想复制/粘贴这个扩展。我尝试将 UICollectionView 子类化,但它不会在内部调用委托/数据源方法。这是我的扩展程序的签名:

func scrollViewDidEndDecelerating(scrollView: UIScrollView)
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize

还有一些私有函数和属性。如果我想经常重用它们,我应该把所有这些方法放在哪里?

【问题讨论】:

  • 还有另外一个选项可以扩展这两个类并将这些方法放入其中。
  • 有没有这样做的例子?这是最直接的方法,但我不知道它应该是什么样子

标签: ios swift architecture uicollectionview


【解决方案1】:

您应该将所有这些逻辑放入单独的 VC 中并重用 VC,而不仅仅是尝试重用集合视图。

因此,无论您在哪里需要此集合视图的“副本”,您实际上都会添加一个子 VC 并将该 VC 中的视图添加为子视图。

【讨论】:

  • 所以我需要在容器视图中添加我的 collectionView 吗?现在,我的视图中只有一个 UICollectionView
  • 不,您将拥有一个全新的视图控制器,它可以是 UICollectionViewController 的子类,您可以将其视图(集合视图)添加为子视图
  • 我正在使用故事板,所以我无法理解你想说什么:(你能解释一下区别吗?我的想法是我创建容器视图,然后创建 UICOllectionVIewController,并将其与容器链接使用嵌入 segue 查看。
猜你喜欢
  • 2021-09-07
  • 2017-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多