reloadData
UITableViewに関するドキュメントには、( http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableView_Class/Reference/Reference.html ): 「挿入または削除するメソッドで呼び出すべきではありません。 rows、特に beginUpdates と endUpdates の呼び出しで実装されたアニメーション ブロック内で".
私の質問は、なぜですか?(特に最初の部分、斜体)。
このように UITableView に項目を追加することを実装している私が読んでいる本があります:
// Add new item to the table
- (IBAction)addNewItem:(id)sender
{
// Update the model, add a new item
BNRItem *newItem = [[BNRItemStore sharedStore] createItem];
// Figure out where that item is in the array
int lastRow = [[[BNRItemStore sharedStore] allItems] indexOfObject:newItem];
// Create the corresponding index path
NSIndexPath *ip = [NSIndexPath indexPathForRow:lastRow inSection:0];
// Insert this new row into the table
[[self tableView] insertRowsAtIndexPaths:[NSArray arrayWithObject:ip]
withRowAnimation:UITableViewRowAnimationTop];
}
一方、同じことは次のようにも達成できます:
// Add new item to the table
- (IBAction)addNewItem:(id)sender
{
// Update the model, add a new item
[[BNRItemStore sharedStore] createItem];
[[self tableView] reloadData];
}