没有二维数组的快速 UICollectionView 部分分离

Posted

技术标签:

【中文标题】没有二维数组的快速 UICollectionView 部分分离【英文标题】:swift UICollectionView section separation without Two-Dimensional Array 【发布时间】:2017-06-12 09:58:44 【问题描述】:

例子

// My data to use
let items: [Any] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ...]

/*
  // UICollectionView result I want

  <Section [Item1, Item2, Item3]>
  <Other Section A>
  <Section [Item4, Item5, Item6]>
  <Other Section B>
  <Section [Item7, Item8, Item9]>
  <Other Section A>
  <Section [Item10, Item11, Item12]>
  <Other Section B>
*/

如果我的数据是像下面这样的二维数组,我可以更容易地看到结果。

let items: [[Any]] = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12] ...]

但我认为我应该只使用一维数组。

因为我的项目会经常添加/删除。并且需要API通信..并且需要LoadMore函数..如果使用二维数组,这些事情可能会变得复杂。这个问题与其他部分的位置有关。

可能只有一维数组吗?我的想法是正确的吗?

【问题讨论】:

你如何决定哪个项目放在哪个部分?每个部分只有三个项目吗? @overactor 是的。 【参考方案1】:

如果您在每个部分中有三个项目,您可以简单地计算每个部分有多少个部分和项目:

func numberOfSections(in collectionView: UICollectionView) -> Int 
    return items.count / 3 + 1


func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int 
    return min(3, items.count - 3 * section)


func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 
    let item = items[indexPath.section * 3 + item]
    // do something with item

【讨论】:

好答案。谢谢! 我只知道投票.. 但它需要 15 声望。所以我以为我什么都做不了。感谢您的评论,我现在知道“马克”了。我不会忘记的。

以上是关于没有二维数组的快速 UICollectionView 部分分离的主要内容,如果未能解决你的问题,请参考以下文章

快速排序算法实现(二维数组)

二维数组快速排序(sort+qsort)

将二维数组转换为列表(一维)的快速方法

如何按特定单元格快速排序二维数组?

如何在javascript中快速缩放二维数组?

Golang-二维数组