【问题标题】:How can I access Collection View from delegate & datasource class?如何从委托和数据源类访问 Collectionview?
【发布时间】:2017-04-14 10:45:27
【问题描述】:

我有一个包含集合视图的视图控制器。 集合视图的委托和数据源是一个自定义类,我无法从该类访问集合视图本身。该类包括UICollectionViewFlowLayout、UICollectionViewDelegateFlowLayout、UICollectionViewDataSource。

我尝试通过键入 self.collectionView 来访问集合视图,但它不起作用,说:“致命错误:在展开可选值 (lldb) 时意外发现 nil”。

尝试设置一个静态 let 变量指向包含集合视图的 View Controller,但它也不起作用。

【问题讨论】:

  • 您应该将委托和数据源方法保留在您的视图控制器中,但将它们的所有数据保留在另一个类中并在您的视图控制器委托方法中返回
  • 在您的故事板中,您是否将您的收藏视图链接到您提到的collectionView var?此 var 应标记为 @IBOutlet

标签: ios swift xcode


【解决方案1】:

代表和数据源是数据提供者,而不是更多。将它们提取到自己的类中是一个非常好的主意(面向对象的设计)。但是这些类不应该实现超过协议的 api 以及它们的一些私有帮助函数。每个协议函数通过将引用作为第一个参数提供对集合视图的访问。

例如

func numberOfSections(in: UICollectionView) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多