调用方法reloadData()

时间:2019-07-23 05:01:12

标签: ios swift uicollectionview reloaddata

我的应用程序包括两个mainCollectionView中的nestedCollectionViewmainCollectionViewCell集合。

就像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()

}

如果我滚动mainCollectionView,则应该更新nestedCollectionView(月份将更改)。

我的问题:代码可以正常工作,但是在这里reloadData()是否正确?这是否是昂贵的CPU工作,应用程序使用了过多的CPU吗?

2 个答案:

答案 0 :(得分:0)

滚动collectionViewCell时,它会自动滚动。在reloadData()内为secondCollectionView调用firstCollectionViewCell并不是一个好主意。

  • 如果您在reloadData()中写入collectionViewCell,则会继续重新加载您的secondCollectionView,这会影响您无法看到数据secondCollectionView的“ strong”,因此无需编写reloadData()

答案 1 :(得分:0)

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

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

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