UICollectionView viewForSupplementaryElementOfKind调用了三次

时间:2014-05-27 11:20:57

标签: ios objective-c uicollectionview

UIViewController上附有UICollectionView。问题是viewForSupplementaryElementOfKind被调用了三次而不只是UITableView中的一个。

想法?

3 个答案:

答案 0 :(得分:1)

对于UICollectionView补充视图,只有Section HeaderSection Footer。如果您已为viewForSupplementaryElementOfKindUICollectionElementKindSectionHeader注册 课程 ,则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