我有一个 UITableView,我想在我的视图控制器的 viewDidLoad 中修改它。但是 UITableView 不会在 viewDidLoad 中查询它的数据源,所以我先调用 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 时,它会崩溃。