如何在 Swift 4 中为 UICollectionView 的部分设置最大元素数?

Posted

技术标签:

【中文标题】如何在 Swift 4 中为 UICollectionView 的部分设置最大元素数?【英文标题】:How to set a max number of elements for sections of a UICollectionView in Swift 4? 【发布时间】:2018-06-08 23:10:13 【问题描述】:

我正在创建一个具有重新排序功能的 UICollectionView。有点像this。

我想限制集合视图每个部分的元素数量并更改“排序动画”(当元素拖动时)。

例如: 您有一个包含 3 个部分(A、B 和 C)的集合视图。 这 3 个部分具有最大元素数。 您将一个元素从 B 部分移动到 A 部分。 A节的最后一个元素应该移动到B节,而不是增加A节的元素个数。

知道如何实现这个功能吗?

【问题讨论】:

让别人为你写代码并不是 *** 的真正目的。到目前为止,您尝试过什么?发布一些代码,以便我们查看您在哪里遇到问题... 【参考方案1】:

如果是其他条件,则可以执行某些条件,并且一个部分中的当前项目数组,如果 items.count 高于允许的最大值,请检查下一部分的项目数量,如果低于则 max 将其放在那里。

您可能想尝试一些类似这样的扩展:

https://github.com/michel-moreau/DraggableCollectionView

https://github.com/lognllc/DraggableCollectionView

https://github.com/liangdahong/BMDragCellCollectionView

https://github.com/Instagram/IGListKit

请务必下载并演示他们的代码,这可能是您正在寻找的。​​p>

【讨论】:

所以没有办法通过重写方法或者在 CollectionView 中设置参数来实现这种行为吧? 没有以编程方式检查您是否没有超过 maxcount 集编号。虽然您可能能够以 3rd 方库的形式找到扩展【参考方案2】:

您为什么不尝试使用一个功能来查看所有三个部分,查看哪些部分有太多项目,然后移动它们。然后...当返回每个集合视图中的项目数时,当它超过每个部分的最大元素数时调用该函数。如果您需要澄清,请告诉我。

func collectionView(.....numberOfItemsOrRows?...)
    if (newArrayCountForList1 > maxElements)
        redistributeArrayValues()
      // copy the above if statement with function inside for the next 2 arrays
 (Assuming each section has an array representing elements in that section)

【讨论】:

以上是关于如何在 Swift 4 中为 UICollectionView 的部分设置最大元素数?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 4 中为 JSON 编写可解码,其中键是动态的?

在 iOS Swift 中,在 Swift 4 中的 TableView 中为 CollectionView 集成不同的数组

如何在 swift 中为 uiimageview 制作自定义边框

swift 如何在Swift中为UITextField设置填充。

如何在 Swift 中为以下观察删除 GeoFire 句柄?

如何在 Swift 中为以下观察删除 GeoFire 句柄?