首页 > 解决方案 > 如何重新排序 UITableView 的各个部分?

问题描述

这个 2009年的问题没有得到回答,它是互联网上极少数提到这个问题的问题之一。

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

我看到这个工作的方式是:您打开表格上的编辑,重新排序指示器出现。当您开始拖动节标题(或充当虚假节标题的单元格,这是次优 [1])时,所有常规单元格“消失”,因此您只能移动节(如果您更容易有多个部分)。

LPRTableView似乎解决了这个问题,但是在重新排序部分时正确设置是相当棘手的。我尝试了一整天,但没有很成功。另外,[1]。

一个不太好但可以接受的解决方案是在标题中添加⬆️⬇️之类的按钮(此处可以使用正确的标题),但这有点尴尬。

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

我在文档中看不到任何东西,例如,在重新排序开始/结束时调用的钩子。或者更确切地说,有结尾部分,但我看不到开头部分。

建议?


[1] 原则上,这允许将行放置在节标题之前,并且您必须手动捕捉它,视觉效果不好。

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

标签: iosswiftuitableviewdrag-and-drop

解决方案


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

那么你就不必考虑动画并坚持“iOS指南”。


推荐阅读