在viewForSupplementaryElementOfKind

时间:2016-11-11 02:58:37

标签: ios uicollectionview swift3 uicollectionviewcell uicollectionviewlayout

我遇到问题,viewForSupplementaryElementOfKind委托功能从未检测到UICollectionElementKindSectionFooter

因此,标题已创建,但页脚从未创建。

我还实施了委托referenceSizeForHeaderInSectionreferenceSizeForFooterInSection方法。

我也注册了NIB。

collectionView.register(UINib(nibName: "FooterCollectionReusableView", bundle: nil), forSupplementaryViewOfKind: UICollectionElementKindSectionFooter, withReuseIdentifier: "footerIdentifier");
collectionView.register(UINib(nibName: "HeaderCollectionReusableView", bundle: nil), forSupplementaryViewOfKind: UICollectionElementKindSectionHeader, withReuseIdentifier: "headerIdentifier");

以下是无效的代码。

func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {

    var view: UICollectionReusableView! = UICollectionReusableView();
    switch kind {
    case UICollectionElementKindSectionHeader:
        print("HEADER DETECTED");//CALLED
        break;
    case UICollectionElementKindSectionFooter:
        print("FOOTER DETECTED");//NEVER CALLED
        break;
    default:
        break;
    }

    return view;
}

有人可以帮我吗?

P.S。:我读过一些人说在footerReferenceSize的布局中设置collectionView会有效,但是我尝试过它也不起作用

1 个答案:

答案 0 :(得分:0)

确保你有一个实现

func collectionView(
  _ collectionView: UICollectionView,
  layout collectionViewLayout: UICollectionViewLayout,
  referenceSizeForFooterInSection section: Int
) -> CGSize

此外,此函数应返回非零大小。我发现如果有任何机会返回零维,UIKit 将推断没有页脚需要出列并且不会调用您的 viewForSupplementaryElementOfKind 函数,或者 supplementaryViewProvider 如果您使用引入的可区分数据源在 iOS 13 中。