如何重新排序UITableView的部分?

时间:2018-05-17 13:30:27

标签: ios swift uitableview drag-and-drop

This question from 2009没有回答,这是互联网上极少数提到这个问题的方法之一。

问题:我想以与行处理相同的方式重新排序UITableView的各个部分(即通过拖动)。

我看待这种方式的方式是:你打开桌面上的编辑,重新排序指标出现。当您开始拖动一个节标题(或一个单元格作为假节目标题,这是次优[1])时,所有常规单元格都会消失",所以你只能移动各个部分(和如果您有多个部分,则会更容易。)

LPRTableView似乎解决了这个问题,但在重新排序部分时正确设置非常棘手。我尝试了一整天并没有取得多大成功。另外,[1]。

一个不那么好但可以接受的解决方案是在标题中包含类似⬆️⬇️的按钮(这里可以使用正确的标题),但它有点尴尬。

另一个不那么好但可以接受的解决方案是有一个额外的步骤(比如一个按钮),它会调出一个新的UITableView,只显示这些部分作为单元格,并允许在那里重新排序。工作正常,但产生的问题比解决的问题多[2]。

我无法在the docs中看到任何内容,例如,在重新排序开始/结束时调用的钩子。或者更确切地说,有ending位但我无法看到它的开头。

建议?

[1]原则上,这允许将行放在节标题之前,你必须手动捕获它,看起来看起来很糟糕。

[2]我甚至会在哪里放置这样的控件,特别是如果我已经拥挤的UI,或者我想保持我的UI最小化?

2 个答案:

答案 0 :(得分:2)

我会去掉所有部分并仅将sectionHeaders显示为UITableViewCells。然后我会使用默认的拖放行为重新排列它们。完成后,将旧的未折叠信息加载回表格视图单元格。

然后您不必考虑动画并坚持使用“iOS指南”。

答案 1 :(得分:0)

借助假部分,您可以点按并拖动该部分视图。有两个步骤:

  1. 首先让代表识别出uitableview的哪个部分 在你点击之下(我希望你能做到这一点,我不会进入 详情)。
  2. 将其放到某个必须更换的部分。因此对于 取而代之的是我脑子里还有两个想法。

    首先播放观点 层次结构最重要的是什么,而不是通过标记或标记的帮助 其他东西让你的部分取代假部分。

    第二个可能是找到可见细胞而不是通过计算 屏幕位置可能是这里的部​​分。

  3. 如果能够实现这一目标,那么您有两个部分,您可以在数据源中替换它们,而不是再次加载数据。