我有一个数组中的名称列表,我想按字母顺序在集合视图上显示它们。并且还展示了每个部分的字母表,我该如何实现这一点。 点击这里查看图片
问问题
537 次
1 回答
1
以下是我对您已有的假设:
- 你有一个
Model
带有属性的模型类 ( )name
- 你背后的数据结构是一个对象
UICollectionView
数组Model
这是我要做的:
Model
按其name
属性对数组进行排序。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:
返回sections数组中的项目数
于 2017-07-30T11:06:01.297 回答