UITableView在更新数据源并使用insertRowsAtIndexPaths后重新加载tableview时重复行?

时间:2013-10-05 00:06:22

标签: iphone ios objective-c uitableview

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显示的单元格。

我已经记录并检查了插入行的部分被称为适当的次数,但显示的值是原始单元格的副本。

1 个答案:

答案 0 :(得分:1)

核心问题是我在所有三个部分使用相同的单元标识符,当它们有不同的单元组件时,因此编译器返回相同的单元,尽管有不同的底层数据源,解决我只是使用了不同的单元标识符对于不同的部分。