0

我用它来添加行到我的 UITableView 动画:

[bookMarksArray insertObject:infoDict atIndex:0];
NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:[bookMarksArray count] inSection:0];
[bookMarkTable insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade];

当我打电话时[bookMarkTable reloadData]一切正常。但是,如果我尝试使用以前的代码,我的应用程序崩溃并出现错误:尝试将第 1 行插入第 0 部分,但更新后第 0 部分中只有 1 行。有任何想法吗 ?

4

3 回答 3

1

@Jonathan 对异常的解释是正确的。但解决方案仍然是错误的。您在索引 0 处插入了一个对象,因此插入行的索引路径为:

NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:0 inSection:0];

如果你在数组的末尾插入了对象,你会做

NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:[bookMarksArray count] - 1 inSection:0];
于 2013-10-02T20:14:13.207 回答
0

[bookMarksArray count] - 1创建索引路径时需要(它的 0 索引)。

于 2013-10-02T20:08:21.937 回答
0

在调用 insertRowsAtIndexPath 之前尝试更新 numberOfRows。

于 2013-10-02T20:13:54.223 回答