我有一个 UITableView,我希望能够通过插入控件(绿色加号图标)插入行。(我最初使用导航栏上的“添加”控件,但使用“返回”、“添加”和“编辑”控件时,我觉得导航栏有点混乱)。
我得到了这个工作,但我不喜欢它与重新排序控件交互的方式。我的桌子只有一个部分;插入行将始终显示为表中的最后一行,并且不应重新排序。
我实现了 canMoveRowAtIndexPath: 为插入控制行返回 false,但这只是部分解决方案。这消除了拖动插入行的能力。但是,没有什么能阻止用户选择可移动行并将其拖到插入控制器行下方。(如果允许,这会使应用程序崩溃)。
我实施的解决方法是检查 moveRowAtIndexPath:toIndexPath 中的 to 位置。如果目标位置在插入行的下方,我不执行移动,调用[tableView reloadData]重绘之前的表格状态。这行得通,但外观很笨拙——该行只是突然回到之前的位置,没有说明原因。
这是这里的正确行为 - 还是有更优雅的解决方案?理想情况下,我希望用户首先不能将该行拖到非法位置,但我不确定是否有任何机制可以防止它。