我的应用程序包括两个mainCollectionView
中的nestedCollectionView
和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()
}
! 如果我滚动mainCollectionView
,则应该更新nestedCollectionView
(月份将更改)。
我的问题:代码可以正常工作,但是在这里reloadData()
是否正确?这是否是昂贵的CPU工作,应用程序使用了过多的CPU吗?
答案 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
并移至下一年。