我一直在使用大量代码 LXReorderableCollectionViewFlowLayout(由 Stan Chang Khin Boon 编写)。它允许在 UICollectionView 中移动项目
我有一个包含多个部分的 Collection View 。这些部分使用其中包含多个控件的标题。我允许用户创建空部分并将项目拖到这些部分中
我使用 Collection View 来显示多个照片相册。每个部分都与不同的专辑相关。当每个相册中已有项目时,将照片从“相册 1”拖到“相册 2”效果很好。
但是,如果相册(部分)为空,我无法将对象移动到该空部分。
我认为问题出在“indexPathForItemAtPoint”。如果该部分中有项目,则此方法提供正确的 NSIndexPath。但如果它是空的,它总是返回section = 0,row = 0。
当我从“0”部分跨越边界进入“1”部分时,NSIndexPath theIndexPathOfSelectedItem 变为 0,0(部分,行)。我原本预计它会达到 1,0。
问题似乎出在“indexPathForItemAtPoint”。当我跨越边界进入不同的(空的)部分时,它没有考虑到该部分可能是空的,并且只是默认为 0, 0。
就像我之前所说的,如果“1”部分中已有项目,则索引路径设置正确。
关于我做错了什么有什么想法吗?
最佳答案
我最终在空白部分放置了一个虚拟(但不可见)项目。当我创建一个新部分时,我在该部分中放置一个虚拟值。我把它设置为不可见,这样它就不会显示出来。每当我添加新项目或从某个部分删除项目时,我都会进行测试以确保虚拟项目存在。
重要提示:如果该部分中至少有 1 个真实项目,我会删除虚拟值。否则,集合列表会尝试绘制它。
我确信有更好的方法来做到这一点。如果您知道如何操作,请发布新答案。
希望这有帮助。
关于ios - 当移动到空部分时,UICollectionView 没有给出正确的索引路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15304877/