如何在CollectionView中按字母顺序显示名称
问题描述:
我有一个数组中名称的列表,我想按照字母顺序在集合视图上显示它们。还要显示每个部分的字母表,我该如何实现这一点。 Click here for Image如何在CollectionView中按字母顺序显示名称
答
这里是我的关于假设你已经拥有:
- 你有一个模型类(
Model
)与属性name
- 数据结构的
UICollectionView
的背后,是Model
对象的数组
这里就是我想要做的:
-
按
name
属性对Model
数组进行排序。sortedModels = models.sorted(by: { (first, second) -> Bool in return first.title.compare(second.title) == ComparisonResult.orderedAscending }
-
创建一个新的属性来保存UICollectionView数据,其中词典键是单字母(“A”,例如),和节名称的阵列,其将包含在正确的顺序的章节。这将是在集合视图的章节标题
var data = Dictionary<Character, [Model]>() var sections = [Character]
-
迭代通过
sortedList
,检查name
属性的第一个字符,然后可以在字典创建一个新的数组(如果该键不存在)或加入Model
现有阵列models.forEach { (model) in let firstCharacter = model.name.characters.first! if var array = data[firstCharacter] { array.append(model) data[firstCharacter] = array } else { var array = [Model]() array.append(model) data[firstCharacter] = array sections.append(firstCharacter) } }
那么你
numberOfSectionsInCollectionView:
将返回字典中键的数量- 和
collectionView:numberOfItemsInSection:
会返回部分数组中的项目数
请使用'first.title
Sulthan