我UIViewController
上附有UICollectionView
。问题是viewForSupplementaryElementOfKind
被调用了三次而不只是UITableView
中的一个。
想法?
答案 0 :(得分:1)
对于UICollectionView
补充视图,只有Section Header
和Section Footer
。如果您已为viewForSupplementaryElementOfKind
和UICollectionElementKindSectionHeader
注册 课程 ,则UICollectionElementKindSectionFooter
会为每个部分调用两次。因此, viewForSupplementaryElementOfKind 的调用取决于节的数量和节头/页脚的可用性
答案 1 :(得分:1)
我不知道为什么会发生这种情况,但我有一个奇怪的解决方案。在viewForSupplementaryElementOfKind方法中返回UICollectionReusableView之前,检查数据源的数量,就像这样
if kind == CHTCollectionElementKindSectionHeader
{
if let header = collectionView.dequeueReusableSupplementaryViewOfKind(kind, withReuseIdentifier: String(ImageDetailHeaderView), forIndexPath: indexPath) as? ImageDetailHeaderView
{
let bannerViewModel=ImageDetailHeaderVM(requestUrlStr: viewModel.headerRequestUrlStr, requestParams: viewModel.headerRequestParams)
if vm.cellModelList.count>0
{
***// only the datasource is not empty ,config the SupplementaryView***
header.vm=bannerViewModel
header.tagClickedHandler=tagClickedHandler
header.shareButtonClicked=shareButtonClicked
header.delegate=self
}
return header
}
}
答案 2 :(得分:0)
这实际上会发生N次,具体取决于您是重新加载集合视图还是将这些部分滚出视图并将它们带回来。只要在视图中显示有页眉或页脚的部分,就会调用viewForSupplementaryElementOfKind