如何在CollectionView

时间:2017-07-30 07:36:03

标签: objective-c uicollectionview uicollectionviewcell ios10.3

我有一个数组中的名称列表,我想按字母顺序在集合视图中显示它们。并且还要显示每个部分的字母表如何实现这一点。 Click here for Image

1 个答案:

答案 0 :(得分:0)

以下是我对你已有的假设:

  1. 您有一个带有属性Model
  2. 的模型类(name
  3. UICollectionView背后的数据结构是Model个对象
  4. 的数组

    这就是我要做的事情:

    1. Model属性对name数组进行排序。

      sortedModels = models.sorted(by: { (first, second) -> Bool in
        return first.title.compare(second.title) == ComparisonResult.orderedAscending
      }
      
    2. 创建一个新属性来保存UICollectionView数据,其中字典键是单个字母(例如" A"),以及包含部分名称的部分名称数组正确的订单。这将是集合视图中的节标题

      var data = Dictionary<Character, [Model]>()
      var sections = [Character]
      
    3. 遍历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)
          }
      }
      
    4. 然后你的numberOfSectionsInCollectionView:将返回字典中的键数

    5. collectionView:numberOfItemsInSection:将返回sections数组
    6. 中的项目数