UITableView一次删除所有行

时间:2011-06-10 21:56:45

标签: objective-c uitableview uikit

如何立即从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;
}

谢谢。

5 个答案:

答案 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];