我得到了关于更新我的TableView一个棘手的问题,我得到使用更新它的不同的方法不同的结果,让我解释一下:的TableView reloadData与beginUpdates&endUpdates
情况1: 我用[tbl reloadData];
其中tbl
是我的TableView,更新TableView - 按预期工作。
情况2: 我使用:
[tbl beginUpdates];
[tbl reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationRight];
[tbl endUpdates];
哪里tbl
是我的TableView,和indexPaths
是包含所有存在于所述的TableView indexPaths阵列。现在数组很好,它包含了所有正确的indexPaths(双重和三重检查),但出于某种原因 - 这不能按预期工作。
现在我意识到这是一个XY问题(我问Y的问题,但我的问题实际上是X,因为我认为解决Y将解决X),那只是因为我觉得解释X有点复杂说上面的问题)以一种简单的方式,所以我宁愿不要这样做,如果可能的话。
因此,回到我的问题:更新TableView的两种方式(当然除了动画位)之间是否存在差异,或者我应该怀疑问题存在于其他位置?
编辑: 好吧,我会尽量解释什么症状:
在cellForRowAtIndexPath
- 方法我添加一个按钮,每个单元有分配的标签等于细胞的indexPath行像这样的:
btn.tag = indexPath.row;
我之所以这样做,这是这样我就可以识别每个按钮都调用相同的功能:
- (void)btnPressed:(id)sender
当我然后更新单元格 - 因为单元格中的某些值已更改 - 情况1使一切正常工作,情况2然而 - 混合标记,以便下一次按下其中一个按钮时,它们不再具有正确的标签。
混淆确实对我来说看起来是随机的,但随机发生的方式取决于我先按哪个单元格按钮。我希望这能够澄清我的问题。
“我得到了不同的结果”,“这不符合预期。”以什么方式? – TigerCoding
那么,每个单元格在创建时都会得到一个按钮,并带有一个标签,其中'按钮标签=索引路径行'。在情况1中,按钮在情况2中获得正确的标签 - 它没有。 –