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