如何立即从UITableView中删除所有行? 因为当我用新数据重新加载表视图时,我仍然插入新行:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
CustomTableViewCell *cell = (CustomTableViewCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[CustomTableViewCell alloc] initWithFrame:CGRectZero] autorelease];
}
//... setting the new cell here ...
return cell;
}
谢谢。
答案 0 :(得分:48)
这样做。
在使用
重新加载表格之前[tableView reloadData];
从tableView数组中删除所有对象(填充tableView的数组) 例如。
[myArray removeAllObjects];
[tableView reloadData];
答案 1 :(得分:5)
仅供参考,上面的解决方案“删除所有dataSource,然后调用reloadData”。听起来他们提倡这个:
TableView.dataSource = nil;
[TableView reloadData];
我试过了,似乎有效。除了在iOS 8.1中,我有随机崩溃。我的意思是随机的,因为我可以执行10x的代码,它会崩溃1x。所以,我使用了推荐的答案:
[myArray removeAllObjects];
[tableView reloadData];
现在我很好。
答案 2 :(得分:4)
删除所有dataSource
,然后致电reloadData
。
答案 3 :(得分:2)
在添加更多数据之前,您似乎没有清除数据集(NSArray
)。 UITableView
通常会显示所有数组数据。如果您不想要以前的行/数据,则应在向其添加新信息之前清空阵列。然后拨打[yourTableView reload]
答案 4 :(得分:0)
首先删除旧数据
myArray = nil;
[tableView reloadData];
然后加载新数据
myArray = newData;
[tableView reloadData];