簡體   English   中英

將數據傳遞給collectionView(numberOfItemsInSection)函數(Swift)

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM