• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

objective-c - UITableView 删除所有可重复使用的单元格

[复制链接]
菜鸟教程小白 发表于 2022-12-13 17:03:08 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

当单元格第一次变得可见时,将使用 init 方法。 当单元格不是第一次变得可见时,它将从 TableView 的内存中出列。

UITableViewCell *cell = [searchTable dequeueReusableCellWithIdentifier:identifier];
if (cell == nil)
{
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier];
}
return cell;

假设我已经滚动了整个表格,现在任何单元格都可以出列,因为它们都已经被初始化了。

我当前的单元格的标识符从 0 到 199。我刷新了我的表格 View ,现在我有了新的单元格信息。我使用方法 reloadData 并通过将 +200 添加到单元格标识符来为新单元格使用从 200 到 399 的标识符:

NSInteger index = indexPath.row + 200;
NSString *CellIdentifier = [NSString stringWithFormat"%d",index];

现在我滚动整个表格并查看从 200 到 399 的单元格。

假设我将 index 改回:

NSInteger index = indexPath.row;

现在一个问题:标识符从 0 到 199 的旧单元仍然可以出队,不是吗?

如果答案是他们可以出队我还有一个问题:

当我开始使用标识符为 200 到 399 的单元格时,有没有办法从 TableView 内存中删除标识符为 0 到 199 的单元格?



Best Answer-推荐答案


UITableView dequeueReusableCellWithIdentifier 方法将为您处理。如果您使用 static [iTableView dequeueReusableCellWithIdentifier:cellIdentifier];

这是来自 apple discussion thread 的讨论.也检查一下。

更新: 您需要修改您的单元格标识符。如果要为每一行创建新的 CellIdentifier,则使用 dequeueReusableCellWithIdentifier 毫无意义,因为标识符每次都不同。

代替

NSString *CellIdentifier = [NSString stringWithFormat"%d",index];

应该是,

static NSString *CellIdentifier = [NSString stringWithString@"cell"];

这意味着一旦不可见,每个单元格都将被重复使用。它只会选择不可见的单元格,并将其重用于您正在显示的下一组单元格。根据您的实现,它将创建 300 或 400 个单元格,您无法删除以前的单元格,因为您不再有任何引用。

您的方法将如下所示,

static NSString *CellIdentifier = [NSString stringWithString@"cell"];
UITableViewCell *cell = [searchTable dequeueReusableCellWithIdentifier:Cellidentifier];
if (cell == nil)
{
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:Cellidentifier];
}
cell.textLabel.text = @"something";
//...
return cell;

Update2:如果你没有使用 ARC,应该是,

cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:Cellidentifier] autorelease]; 

你需要一个 autorelease 来做同样的事情。

关于objective-c - UITableView 删除所有可重复使用的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12870171/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap