具有成分布局的集合视图不适用于标题视图

阿米特

尝试UICollectionView使用创建compositionalLayout它适用于集合视图单元格,但是当我尝试添加标头时,它崩溃并显示寄存器笔尖错误:

由于未捕获的异常“ NSInternalInconsistencyException”而终止应用程序,原因:“无法使种类的视图出列:具有标识符headerView的SectionHeaderElementKind-必须为标识符注册一个笔尖或一个类,或者在情节提要中连接原型单元格”

View Controller的代码实现:

class ViewController: UIViewController {

    @IBOutlet weak var collectionView: UICollectionView!

    override func viewDidLoad() {
        super.viewDidLoad()

        collectionView.register(UINib(nibName: "CollectionReusableView", bundle: nil), forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: "headerView")
        collectionView.register(UINib(nibName: "CollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "cellIdentifier")
        collectionView.collectionViewLayout = customLayout()
     }

    func customLayout() -> UICollectionViewLayout {

        let size = NSCollectionLayoutSize(
            widthDimension: NSCollectionLayoutDimension.fractionalWidth(1),
            heightDimension: NSCollectionLayoutDimension.estimated(44)
        )
        let item = NSCollectionLayoutItem(layoutSize: size)
        let group = NSCollectionLayoutGroup.horizontal(layoutSize: size, subitem: item, count: 1)

        let headerSize = NSCollectionLayoutSize(
            widthDimension: .fractionalWidth(1.0),
            heightDimension: .absolute(40)
        )
        let sectionHeader = NSCollectionLayoutBoundarySupplementaryItem(
            layoutSize: headerSize,
            elementKind: "SectionHeaderElementKind",
            alignment: .top
        )

        let section = NSCollectionLayoutSection(group: group)
        section.boundarySupplementaryItems = [sectionHeader]
        let layout = UICollectionViewCompositionalLayout(section: section)
        return layout
    }
}

extension ViewController: UICollectionViewDataSource {

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return 5
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cellIdentifier", for: indexPath) as! CollectionViewCell

        return cell
    }

    func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
        let cell = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "headerView", for: indexPath) as! CollectionReusableView

        return cell
    }
}

我创建的标题视图:

class CollectionReusableView: UICollectionReusableView {

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

}

如果我在这里缺少东西,请帮助。

普拉萨德

在构建布局并将可重用视图注册到集合视图时,都应为元素种类使用相同的值。

更改此:

collectionView.register(UINib(nibName: "CollectionReusableView", bundle: nil), forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: "headerView")

collectionView.register(UINib(nibName: "CollectionReusableView", bundle: nil), forSupplementaryViewOfKind: "SectionHeaderElementKind", withReuseIdentifier: "headerView")

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Android FindViewById仅适用于子布局(列表视图行),不适用于父布局中的TextView

导航栏在每个视图控制器(如Twitter)中具有不同的颜色(不适用于setbartintcolor)

添加边框以使视图不适用于iPad

分区视图不适用于参数

更改样式仅适用于单击的视图,而不适用于所有视图

为什么具有不同类型元素的集合不适用于迭代?

findViewById不适用于特定视图

滚动不适用于移动视图

滚动视图不适用于约束布局

CASSANDRA:允许过滤不适用于材料化视图

共享布局视图不适用于ASP.NET Core 2.1中的所有视图

Vue过渡不适用于具有可重用组件的路由器视图

Reactstrap中的xs =“ 0”不适用于移动视图

SVG路径不适用于容器视图框

范围修剪视图实现不适用于反向视图

ScrollView不适用于SimpleAccordian视图/

内容具有优先级的内容不适用于UIStackView中的自定义视图和标签

Xamarin样式不适用于自定义视图

约束布局约束尺寸比例不适用于多个视图

具有背景更改的多选列表视图不适用于iOS

CGRectContainsPoint不适用于不同的视图

UICollectionViewFlowLayout minimumLineSpacing不适用于整个集合视图-Swift

约束布局不适用于滚动视图

调整平移不适用于滚动视图之外的参数

后退按钮不适用于 SafeArea 视图

SwiftUI 拆分视图大标题不适用于 iPad

水平滚动视图不适用于本机反应

UIStackView 间距不适用于具有基线对齐的嵌套堆栈视图

Python csv 导出不适用于具有标题匹配行的统一模式