- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath
*)indexPath
{
NSString *CellIdentifier = [NSString stringWithFormat:@"CellName-%d", [indexPath row]];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
// etc
}
}
我希望清除我存储的所有单元格,因为表格数据已经更改,因此需要重新生成它们。我故意以这种方式存储所有细胞。
我想知道是否有一种方法/方法可以使所有活着的细胞变得愚蠢,这些细胞与特定的表相关。
此致 -code
答案 0 :(得分:3)
你不能,当你看到你的代码时,你没有使用任何出列的单元格,因为你为tableview中的每一行创建了一个新的单元格。
这意味着如果您的表中有1000个单元格,则会创建1000个tabelviewcells。这将使你的tableview非常慢,也会占用你的记忆。
当单元格看起来相同时,应该都给出相同的cellIdentifier
,然后用您的数据源中的数据填充单元格。
您只应在dequeueReusableCellWithIdentifier:
未返回任何单元格时创建新单元格。
然后当调用[self.tableView reloadData]
时,您只需从数据源中读取新值并将其填入tableview单元格中。
您的数据源是存储状态而不是单元格的位置,因为我无法想到让您的数据源以这种方式工作的任何其他原因。
答案 1 :(得分:0)
我认为UITableView有方法[tableView reloadData]清除所有单元格。当我在桌面视图中添加数据的app时。我打算这种方法。
答案 2 :(得分:0)
while ([tableView dequeueReusableCellWithIdentifier:@"reuseid"]) {}
答案 3 :(得分:0)
我一直在与此作斗争,解决方案是从superview中删除表视图并完全释放它,因此tableview是dealloced ed
[self.tableView removeFromSuperview];
而不是重新创建一个新的TableView ......这有点残酷,但我需要这个用uiwebviews删除昂贵的单元格