1

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

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

4

1 回答 1

1

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

于 2013-10-05T02:08:18.540 回答