[英]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.