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 に答える