我在更新我的 TableView 时遇到了一个棘手的问题,我使用不同的更新方法得到了不同的结果,让我解释一下:
情况 1:
我使用[tbl reloadData];
where tbl
is my TableView 来更新 TableView - 按预期工作。
情况2: 我使用:
[tbl beginUpdates];
[tbl reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationRight];
[tbl endUpdates];
我的 TableView在哪里tbl
,并且indexPaths
是一个包含 TableView 中存在的所有 indexPaths 的数组。现在数组很好,它包含所有正确的 indexPaths(双重和三重检查),但由于某种原因 - 这不能按预期工作。
现在我意识到这是一个 XY 问题(我要求 Y,但我的问题实际上是 X,因为我认为解决 Y 将解决 X),那只是因为我觉得解释 X 有点复杂(上述问题的结果)以一种简单的方式,所以如果可能的话,我宁愿避免这样做。
所以,归结为我的问题:更新 TableView 的两种方式之间是否有区别(当然除了动画位)还是我应该怀疑问题出在其他地方?
编辑: 好的,我将尝试解释症状是什么:
在- 方法中cellForRowAtIndexPath
,我向每个单元格添加一个按钮,其分配的标签等于单元格的 indexPath 行,如下所示:
btn.tag = indexPath.row;
我这样做的原因是我可以识别每个按钮,因为它们都调用相同的函数:
- (void)btnPressed:(id)sender
然后当我更新单元格时 - 因为单元格中的某些值已更改 - 情况 1 使一切正常,但是情况 2 - 混合了标签,因此下次按下其中一个按钮时,它们不再具有正确的标签。
混淆对我来说确实是随机的,但随机化的发生方式不同,具体取决于我首先按下的单元格按钮。我希望这能澄清我的问题。