gpt4 book ai didi

ios - 重新排序/移动 UITableViewCell 但移回

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:04:09 27 4
gpt4 key购买 nike

我想实现一种能够对 TableView 的行重新排序的方法。在每个部分我只有一行。当启用 tableview 的编辑状态时,移动指示器显示为 expacted。但是当我将其中一个单元格拖到另一个位置时,该单元格会立即(大约 1 秒后)弹回到原来的位置。这对我来说很奇怪,因为我已经实现了这样的重新排序功能。这两个项目的区别在于新项目实现了一堆手势识别器(例如UILongPressGestureRecognizerUIPanGestureRecognizer、UIPinchGestureRecognizer 等)。我已经考虑过其中一种手势识别器可能会阻止 tableviewcell 的拖动操作,但事实并非如此。

你可以看到下面的代码:

- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {

return YES;
}

- (NSIndexPath *)tableView:(UITableView *)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath {

//return [NSIndexPath indexPathForRow:0 inSection:3];

return nil;
}

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath {

NSLog(@"%@", destinationIndexPath);
}

谁能帮帮我?

更新:

我发现移动的 tableviewcell 正在移动到原始目标索引路径。这是否表明 TableView 上发生了 reloadData?

第二次更新:

因为 Andrei Shender 提到为什么我在 tableView:targetIndexPathForMoveFromRowAtIndexPath:toProposedIndexPath: 方法中返回 nil,您可以在下面找到我更新的代码。

- (NSIndexPath *)tableView:(UITableView *)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath {

return proposedDestinationIndexPath;

//for testing purpose only
//return nil;
}

顺便说一句,在更改我的代码时,我发现永远不会调用此方法。关于Apples documents about reordering tableviewcells它应该被调用。

最佳答案

多亏了这个posting我想通了,问题是什么。将 UIPanGestureRecognizer 和 UITableView 与重新排序/移动功能相结合是一件棘手的事情。

当我编辑 tableview 时,我删除了手势识别器(viewcontroller 的 View ),当再次禁用编辑时,我再次添加手势识别器。

关于ios - 重新排序/移动 UITableViewCell 但移回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17103307/

27 4 0