将自定义流程布局添加到集合视图时,附件选项会消失,为什么?,我使用this流程布局来集中我的集合视图的元素,但是因为没有使用故事板将部分标题添加到我的集合视图的方法,为集合视图添加标题的步骤是什么?
我尝试的是:
由于我的自定义布局是UICollectionViewFlowLayout的子类,因此在故事板编辑器中,我选择了左对象列表器中的布局(黄色立方体)。然后在Identity Inspector中,我选择了自定义布局的类。
集合视图似乎为标题创建了空间,但它内部没有显示任何内容,即使我只为可重用视图提供另一种背景颜色,它也不会显示任何内容。
答案 0 :(得分:2)
经过一些研究后,我发现了我在寻找的东西:
我必须在一个单独的xib中创建我的标题,所以这就是我所做的:
Swift 3.2
override func viewDidLoad() {
...
let headerNib = UINib(nibName: "HeaderCollectionReusableView", bundle: nil)
collection.register(headerNib, forSupplementaryViewOfKind: UICollectionElementKindSectionHeader, withReuseIdentifier: "Header")
}
viewForSupplementaryElementOfKind
方法Swift 3.2
func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
switch kind {
case UICollectionElementKindSectionHeader:
let headerView = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "Header", for: indexPath)
return headerView
default://I only needed a header so if not header I return an empty view
return UICollectionReusableView()
}
}
答案 1 :(得分:0)
在Objective-C中
在viewDidLoad内部调用registerCell方法
- (void)registerCell {
UINib *cellNibTitle = [UINib nibWithNibName:@"YOUR_HEADER_CELL" bundle:nil];
[self.collection registerNib:cellNibTitle forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"Header"];
}
并调用委托方法:
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath {
if(kind == UICollectionElementKindSectionHeader){
YOUR_HEADER_CELL *headerView = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:@"Header" forIndexPath:indexPath];
return headerView;
}
return [UICollectionReusableView new];
}