![](/img/trans.png)
[英]collectionView:numberOfItemsInSection: in UITableviewcell (DetailedCell)
[英]Passing Data to collectionView(numberOfItemsInSection) function (Swift)
我无法将数据从模型传递到集合视图。 我已经将代码简化为一个简单的项目来说明问题,可以在这里找到: https : //github.com/routineCode/collectionViewDataProblem
这是使用当前代码显示所需结果与实际结果的图像: 查看控制器输出,显示所需结果与实际结果
我希望collectionView(numberOfItemsInSection)函数返回我的[data]数组中的项目数(5),但它返回的是硬编码值(3)。 通过调试,我意识到这是因为在调用此函数时viewController始终为nil,但是我不知道如何解决该问题。 我还使用了collectionView(cellForItemAt)函数中的[data]数组,它可以正常工作,因为在调用该函数时viewController并不为零。 谢谢你的帮助。
设置ViewController后尝试reloadData
lazy var menuBar: MenuBar = {
let mb = MenuBar()
mb.viewController = self
mb.cView.reloadData()
return mb
}()
顺便说一句,您的代码有内存泄漏问题
保留圈
保留圈是两个对象之间具有很强的参照关系,因此没有人永不释放。 这是一个与您的保留圆完全相同的保留圆的示例。
在您的代码中,ViewController对menuBar有很强的引用
lazy var menuBar: MenuBar ...
而且MenuBar对ViewController有很强的引用
var viewController: ViewController?
您可以将viewController属性设置为weak,但是为整个ViewController提供什么呢? 为什么您的menuBar应该了解整个viewController? 您可以只删除viewController属性,然后给它一个data属性。
let data = [String]()
并在您的viewController中进行设置
lazy var menuBar: MenuBar = {
let mb = MenuBar()
mb.data = data
return mb
}()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.