TableView由3个部分组成,每个部分都附加到行值的数组中,这些数组通过每个单元的附件视图中的按钮相互关联,因此当按下按钮时,基础数据源被更改并且表被重新加载,匹配更新后使用代码之前和之后的行数:
int sentCount = [[self sendersList] count];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row inSection:0];
NSIndexPath *indexPathToMove = [NSIndexPath indexPathForRow:(sentCount - 1) inSection:2];
[tableView beginUpdates];
[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPathToMove] withRowAnimation:UITableViewRowAnimationRight];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationLeft];
[tableview endUpdates];
[tableview reloadData];
我得到的是这个新索引路径中原始行的副本,而不是从数据源获取数据后应该由cellForRowAtIndexPath显示的单元格。
我已经记录并检查了插入行的部分被称为适当的次数,但显示的值是原始单元格的副本。
答案 0 :(得分:1)
核心问题是我在所有三个部分使用相同的单元标识符,当它们有不同的单元组件时,因此编译器返回相同的单元,尽管有不同的底层数据源,解决我只是使用了不同的单元标识符对于不同的部分。