gpt4 book ai didi

ios - 如何在不调用 reloadData 的情况下删除 UITableView 中的行并更新 indexPaths?

转载 作者:可可西里 更新时间:2023-11-01 05:30:25 25 4
gpt4 key购买 nike

[更新]

我发现了问题。我已经创建了一个自定义的 UITableViewCell,并且没有使用标准方法来触发删除。我的自定义 UITableViewCell 有一个自定义的 indexPath 属性,我在创建单元格时填充它。这就是为什么它在没有调用重新加载数据的情况下不会得到更新的原因。

作为解决方法,为了尽量减少代码重写,我使用标记为答案的解决方案。

[/UPDATE]

我看过其他类似的问题,但不太一样......

我有一个 UITableView,它从 NSArray 中的对象获取它的行(单元格)。使用 indexPath.row 将行映射到 NSArray。这意味着 NSArray 中索引为 0 的对象对应于 indexPath.row 为 0 的单元格。

每当我删除一行时,我都会从 NSArray 中删除该对象(如许多示例所示,包括 Apple 的文档)。

问题是,无论何时删除一行,索引路径都不会更新。例如:

我有一个包含 3 行的 TableView 。这意味着我有 indexPath.row 0、1 和 2。此外,相应的 NSArray 对象的索引为 0、1 和 2。

当我从 UITableView 中删除第 1 行并删除 NSArray 中的相应对象时,剩下的是 indexPath.row 1 和 2,但 NSArray 的索引是 0 和 1。

如果我尝试从 UITableView 中删除现在的第二行,我会遇到一个问题,因为它的 indexPath.row 是 2,但是 NSArray 中对应的对象的索引是 1。

换句话说,indexPath.row 和对象索引不再“同步”。

人们建议使用 UITableView 的 reloadData 方法...这实际上会“重置”indexPaths,但会中断 UITableView 的行动画。

我怎样才能删除行,更新 indexPaths 并仍然保持 UITableView 的动画?!

最佳答案

未测试,但我能想到的一些事情是延迟重新加载,直到动画完成。或者使用以下方法重新加载这些行而不是整个表:

- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation

延迟:

[tableView performSelector:@selector(reloadData) withObject:nil afterDelay:0.5];

关于ios - 如何在不调用 reloadData 的情况下删除 UITableView 中的行并更新 indexPaths?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16243598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com