【发布时间】:2018-10-27 19:11:54
【问题描述】:
This question from 2009 没有得到答复,这是互联网上极少数提及此问题的问题之一。
问题:我想重新排序 UITableView 的各个部分,就像我对行所做的一样(即,通过拖动)。
我看到这个工作的方式是:您打开表格上的编辑,重新排序指示器出现。当您开始拖动节标题(或充当伪节标题的单元格,这是次优 [1])时,所有常规单元格“消失”,因此您只能移动节(如果您更容易有多个部分)。
LPRTableView 似乎解决了这个问题,但是在重新排序部分时正确设置是相当棘手的。我尝试了一整天,但没有很成功。另外,[1]。
一个不太好但可以接受的解决方案是在标题中添加⬆️⬇️之类的按钮(此处可以使用正确的标题),但这有点尴尬。
另一个不太好但可以接受的解决方案是有一个额外的步骤(比如一个按钮),它会打开一个新的 UITableView,只将部分显示为单元格,并允许在那里重新排序。工作正常,但产生的问题多于解决的问题 [2]。
我在the docs 中看不到任何内容,例如,在重新排序开始/结束时调用的挂钩。或者更确切地说,有ending 位,但我看不到开头的位。
建议?
[1] 原则上,这允许将行放置在节标题之前,您必须手动捕捉它,视觉效果不好。
[2] 我什至会在哪里放置这样的控件,尤其是如果我的 UI 已经很拥挤,或者我想保持我的 UI 最小化?
【问题讨论】:
-
我看到了,但它不允许我将单元格从一个部分移动到另一个部分。
-
你试过 func moveSection(_ section: Int, toSection newSection: Int) 吗?
-
可以,但是无法拖放这些部分。如果我有向上和向下按钮,那么我会在 之后使用该功能。
-
UITableView 控件没有提供“内置”标准方法来执行此操作,因此您需要自己手工制作。查看@AhmadF 提供的链接,您可以尝试使用点击手势或平移手势来启动和控制部分的移动。
标签: ios swift uitableview drag-and-drop