gpt4 book ai didi

ios - UICollectionView 多个部分和标题

转载 作者:IT王子 更新时间:2023-10-29 05:20:57 31 4
gpt4 key购买 nike

我正在努力尝试在我的 Collection View 中做多个部分,每个部分都有一个标题。我不知道 Obj-C,我已经找到了大量的教程,但一直无法弄清楚如何将它转换为 Swift。

我所有的数据都是静态的,所以我只需要某种数组或字典,我可以用它们来创建多个部分。我已经有一个包含 1 个部分的 Collection View ,所以如果您对多个部分有任何见解或代码,那将很有帮助。

我知道如何使用

设置多个部分
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int   {
return sectionData.count
}

我认为我需要帮助的主要事情是实现这个功能

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { }

并设置数据!

UICollectionView 和 UITableView 几乎完全相同,因此如果您知道如何在 Swift 中的 UITableView 中执行多个部分,我们也非常感谢您的帮助

最佳答案

cellForItemAtIndexPath 函数处理用单元格填充每个部分,它不处理部分或补充 View ,因此在创建部分标题时,它不是您需要帮助的主要内容。

您需要实现的方法是viewForSupplementaryElementOfKind。它的签名是:

func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView {}

假设您的 collectionView 对于 1 个部分正常工作(您已正确填写 cellForItemAtIndexPath 的主体并且您的 sectionData 数组正确反射(reflect)了您要显示的部分数量),您应该能够使用以下几点:

与单元格一起,UICollectionView 还支持“补充” View 对象,通常用于页眉或页脚。这些补充 View 的行为与 UICollectionViewCell 对象非常相似。与 cellForItemAtIndexPath 处理单元格的方式相同,viewForSupplementaryElementOfKind 函数处理补充 View 。

要实现它,您需要首先准备好您的 ViewController。首先编辑您的布局对象以反射(reflect)适当的标题大小,每个标题都将遵守:

 let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
layout.headerReferenceSize = CGSize(width: self.view.frame.size.width, height: 30)

注意:我使用的是 UICollectionViewFlowLayout

接下来,如果您还没有这样做,请创建一个定义每个节标题对象的 SectionHeader 类,这样您就可以像这样向您的 collectionView 对象注册该类:

  collectionView!.registerClass(SectionHeaderView.self, forSupplementaryViewOfKind:UICollectionElementKindSectionHeader, withReuseIdentifier: "SectionHeaderView");

这里,传入的第一个和第三个参数和一个 UICollectionViewCell 类注册一样,这个方法中的第一个参数是对你创建的section header类的引用。第三个是补充 View 的重用标识符。

第二个参数特定于补充 View ,它设置补充 View 的种类,在本例中是标题,由 UICollectionViewFlowLayout 类 UICollectionElementKindSectionHeader 用于它。如果您注意到 viewForSupplementaryElementOfKind 上的参数,这个 kind 稍后会作为 kind: String 参数传入。

像填写 cellForItemAtIndexPath 函数一样填写 viewForSupplementaryElementOfKind 的主体——使用 dequeueReusableSupplementaryViewOfKind 方法创建 SectionHeader 对象,然后将任何属性设置为必要的(标签、颜色等),最后返回标题对象。

希望这对您有所帮助!

引用点:

https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UICollectionViewDataSource_protocol/index.html#//apple_ref/occ/intfm/UICollectionViewDataSource/

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UICollectionViewFlowLayout_class/index.html#//apple_ref/c/data/UICollectionElementKindSectionHeade

关于ios - UICollectionView 多个部分和标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28102639/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com