2

我一直在使用大量代码 LXReorderableCollectionViewFlowLayout(由 Stan Chang Khin Boon 编写)。它允许在 UICollectionView 中移动项目

我有一个包含多个部分的集合视图。这些部分使用带有多个控件的标题。我允许用户创建空部分并将项目拖到这些部分中

我使用集合视图来显示多个照片相册。每个部分都与不同的专辑相关。当每个相册中已有项目时,将照片从“相册 1”拖动到“相册 2”可以正常工作。

但是,如果相册(部分)为空,我无法将对象移动到该空白部分。

我认为问题在于“indexPathForItemAtPoint”。如果该部分中有项目,则此方法提供正确的 NSIndexPath。但如果它是空的,它总是返回 section = 0, row = 0。

当我从“0”部分越过边界进入“1”部分时,NSIndexPath theIndexPathOfSelectedItem 变为 0,0(部分,行)。我本来预计它会达到 1,0。

问题似乎与“indexPathForItemAtPoint”有关。它没有考虑到该部分可能是空的,并且当我越过边界进入另一个(和空的)部分时,默认为 0, 0 。

就像我之前说的,如果“1”部分已经有项目,那么 indexPath 设置正确。

关于我做错了什么的任何想法?

4

1 回答 1

3

我最终在空白部分放置了一个虚拟(但不可见)项目。当我创建一个新部分时,我在该部分中放置了一个虚拟值。我让它不可见,这样它就不会显示出来。每当我添加新项目或从我测试的部分中删除项目以确保虚拟项目存在时。

重要提示:如果该部分中至少有 1 个真实项目,我会删除虚拟值。否则,集合列表会尝试绘制它。

我确信有更好的方法来做到这一点。如果您知道如何,请发布新答案。

希望这可以帮助。

于 2013-09-08T22:06:54.483 回答