我有一对NSMutableArrays
,我需要在刷新视图时清除。然而,当我试图用[array removeAllObjects];
清除它们时,我的表视图由于index beyond bounds error
而崩溃。所有我做的刷新,是清除数组和调用相同的功能,在viewDidLoad填充表视图。[tableView reloadData]
直到方法的最后一行才被调用。
编辑:这是极有可能的问题是这样的:我使用拉刷新外部库,当你向上滚动并释放表,它反弹下来,因此UITableView试图加载下一个单元格,它不能,因为数组被清除,它仍在加载。
答案:从数组中移除对象,立即做一个self。tableView reloadData,然后继续。
问题可能是由于numberOfRowsInSection
返回一些计数和您的数据源数组为空。
只调用[array removeAllObjects]
和numberOfRowsInSection
中的return [array count]
。
我以以下方式从表视图中删除单元格-
NSMutableArray* indexPathsToDelete = [[NSMutableArray alloc] init];
for(unsigned int i = 0; i < [self.array count]; i++)
{
[indexPathsToDelete addObject:[NSIndexPath indexPathForRow:i inSection:0]];
}
[self.tableView beginUpdates];
[self.array removeAllObjects];
[self.tableView deleteRowsAtIndexPaths:indexPathsToDelete withRowAnimation:UITableViewRowAnimationLeft];
[self.tableView endUpdates];
[indexPathsToDelete release];
当你刷新你的数组时,首先检查它是否有对象&然后重新初始化数组并释放一个。
我做的是
[array removeAllObjects];
然后调用
[self.tableview reloadData];