我有一个tableViewController,视图中有一些单元格。我想要实现的是用户只能在我在数组中指定的indexPath中移动某些单元格。
假设我有这些项目:
我希望这些“子项目”可以编辑和移动,但只能在其边界内。用户不应将这些项目移出其父项目。
我已经想出如何只让这些项目可编辑,也可以移动。问题是我可以将这些项目拖到父项之外。我有一个名为indexOfCurrentSubViews
的数组中所有子项的索引。
我看到了这个问题的两个解决方案:
问题是我不知道如何实现这些。请记住,所有这些项目都在一个列表中。这里没有多个部分。跟踪哪些项目是子项目的唯一事情是数组indexOfCurrentSubViews
。
我尝试在if-statement
内创建一个moveRowAtIndexPath
,以检查toIndexPath.row
是否大于indexOfCurrentSubViews
中最后一个元素的行,或者小于第一行的行项目。如果是这样,请使indexPath等效于数组中的最小(或最大)项。这适用于将它们正确放置在我拥有的另一个数组中(以跟踪视图中的所有项目)。但即使它正确地放在我的数组中,它仍然在视图中的错误位置。
我怎样才能达到我想要的东西?
答案 0 :(得分:2)
实施此UITableViewDelegate
方法:
- (NSIndexPath *)tableView:(UITableView *)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath
基本上,您需要确定建议的indexPath是否有效。如果没有,那么您需要返回一个可接受的备用indexPath。如果可以接受,只需返回建议的indexPath。