UITableView があり、View Controller の viewDidLoad で変更したいと考えています。しかし、UITableView は viewDidLoad で dataSource を照会しないので、最初に reloadData を呼び出してから、beginUpdates と endUpdates でセルを変更します。(私の場合、いくつかのセルを削除しているだけです)。しかし、endUpdates が呼び出されると、例外がスローされます。
[__NSArrayM insertObject:atIndex:]: 空の配列の境界を超えるインデックス 1。
この例外はどういう意味ですか? UITableView に正しい数値を返していることはわかっています。これは、viewDidAppear の後に呼び出すと完全に機能しますが、viewDidLoad では機能しないためです。
編集 :
これが私のコードです
for (int i = 0; i < [customDataSource numberOfSectionsInTableView]; i ++) {
NSInteger n = [customDataSource tableView:self numberOfRowsInSection:section];
NSMutableArray* array = [[NSMutableArray alloc] initWithCapacity:n];
for (NSInteger i = 0; i < n; i++)
[array addObject:[NSIndexPath indexPathForRow:i inSection:section]];
[super beginUpdates];
[super deleteRowsAtIndexPaths:array withRowAnimation:UITableViewRowAnimationNone];
[super endUpdates];
}
このコードを viewDidAppear から viewDidLoad または viewWillAppear に移動すると、クラッシュします。