3

を使用してテーブルビューに行を追加しようとしています

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];

insertRowsAtIndexPaths:withRowAnimation:を呼び出すと、例外がスローされます。

Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 1 beyond bounds [0 .. 0]'

正しい数の行とセクションを返しますが、例外をスローする前にcellForRowAtIndexPathに到達することはありません。私はストーリーボードでもこれを行っています。tableViewの大部分には実際には静的セルがあるため、tableViewには静的セルが設定されています。動的プロトタイプに切り替えたくないのは、使用しているIBOutletsとIBActionを使用できず、セルのレイアウトに関して基本的に最初からやり直す必要があるためです。tableViewを動的プロトタイプセルに変更せずにこの例外を取り除く方法はありますか?

編集

私が投稿した直前の行は

[itemsInCurrentPurchase insertObject:itemName atIndex:0];

アレイを更新することになっています。使ってます

[itemsInCurrentPurchase count]

セクション内の行数については、更新後に正しい数を返しています。問題は、cellForRowAtIndexPathメソッドに到達していないことです。更新中に、このエラーの原因となる可能性のある行数とセルタイプの間に呼び出されるものは他にありますか?

4

1 に答える 1

9

行を挿入する前に、この新しいオブジェクトでデータソースを更新する必要があります。そうしないと、この新しい行でテーブルビューを更新しようとしているときにクラッシュします。

例:-

[self.dataSourceArray insertObject:object atIndex:indexPath.row];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
于 2013-01-05T20:57:55.803 に答える