我有一个UICollectionViewDiffableDataSource
这样的:
var data:UICollectionViewDiffableDataSource<Section, Message>!
我像这样定义我的部分标题的布局:
let header = NSCollectionLayoutBoundarySupplementaryItem(
layoutSize: .init(widthDimension: .fractionalWidth(1.0), heightDimension: .estimated(10)),
elementKind: UICollectionView.elementKindSectionHeader,
alignment: .top
)
section.boundarySupplementaryItems = [header]
最后,要返回我的标题,我有这个函数返回UICollectionReusableView
如下:
func setupHeaderData() {
data.supplementaryViewProvider = { collectionView, kind, indexPath in
return DateStampBuilder(data: self.data, style: self.style).build(collectionView: collectionView, kind: kind, indexPath: indexPath)
}
}
很棒的是:我可以在UICollectionView
.
我想要什么:如何选择不显示特定部分的特定标题?
当我尝试nil
在以下函数中返回时:
data.supplementaryViewProvider = { collectionView, kind, indexPath in
我收到以下错误:
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'the view returned from -collectionView:viewForSupplementaryElementOfKind:atIndexPath (UICollectionElementKindSectionHeader,<NSIndexPath: 0xb461f3e1dd0c21dc> {length = 2, path = 0 - 0}) was not retrieved by calling -dequeueReusableSupplementaryViewOfKind:withReuseIdentifier:forIndexPath: or is nil ((null))'
我对如何“可选地”返回一个部分的标题的唯一想法是注册另一个高度为零的标题视图,并在我根本不想返回任何标题时返回此标题。
但是对我来说,这似乎有点混乱,如果我可以nil
在我不显示标题时返回,那会更干净。
我究竟做错了什么?
谢谢你的帮助!