调用方法 reloadData()

Calling the method reloadData()

我的应用程序包含两个 collectionViews,mainCollectionViewnestedCollectionView,它们位于 mainCollectionViewCell 中。

就像iPhone日历应用程序,mainCollectionView中的每个单元格都有代表一个月的nestedCollectionView(单元格的数量将是月份的天数) .

class cell_Main:UICollectionViewCell{

    let collectionView:UICollectionView = {
        let cv = nestedCollectionView()
        cv.backgroundColor = .white
        return cv
    }()

为了在月份更改时更新 nestedcollectionView,我在方法(属于 mainCollectionView)中使用了 nestedcollectionView.reloadData()

  func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell_main", for: indexPath) as! cell_Main

        let nested_CollectionView = cell.collectionView as! nestedCollectionView
               .
               .
               .
         nested_CollectionView.reloadData()

}

如果我滚动 mainCollectionViewnestedCollectionView 应该会更新(月份会更改)。

我的问题:代码工作正常,但它是 reloadData() 的正确方法吗?它是一个昂贵的 CPU 工作吗,应用程序是否使用太多 CPU ?

我没有使用表示一年中月份的嵌套 Collection View,而是尝试制作一个 Main CollectionView,部分的数量为 12(月份数 ),每个部分代表月份,在每个部分中,numberOfItemsInSection 将是月份的天数。任何更新都可以在这里(不使用 reloadData()):

   func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
}

。最后,当我们向下滚动到结束部分时,我们将调用 reloadData() 来更新新的 numberOfSections 并移至下一年。