gpt4 book ai didi

ios - 为什么 Apple 改变了 UITableViewCell 的工作顺序?

转载 作者:行者123 更新时间:2023-11-28 22:39:17 27 4
gpt4 key购买 nike

现在我们必须在 ViewDidLoad 的某处使用此代码 -

[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:CellIdentifier];

我不确定旧方法有什么问题,方法是检查单元格是否真的由旧方法中的队列返回

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

让我困惑的是,为什么在不相关的地方使用一些任意的方法调用,这个“注册”方法到底做了什么?

最佳答案

从 iOS 5 开始,Apple 引入了一种从 NIB 文件实例化单元格的快捷方法,该方法分为三个阶段:

  1. 声明单元格标识符的属性
  2. 注册包含单元格的 NIB 对象,并将其关联与细胞标识符
  3. 创建单元格本身(然后像往常一样自定义控件)

注册 NIB 对象只需要在 Controller 的生命周期内发生一次,因此放置代码的明显位置是 tableView Controller 的 viewDidLoad 方法:

cellIdentifier = @"CustomCell";
[tableView registerNib:[UINib nibWithNibName:@"customCell" bundle:nil]

这需要两个参数:

  1. 对 UINib 实例的引用,您可以通过传入UINib 的 nibWithNibName 方法
  2. 之前创建的NSString单元格标识符

在 NIB 注册为用作单元格后,dequeueReusableCellWithIdentifier 方法将执行以下两项操作之一:

  1. 如果有可重复使用的缓存单元格,它将被出列并且可以通过单元格变量访问。
  2. 如果没有可重复使用的单元格,dequeueReusableCellWithIdentifier 将从注册 Nib 。

这两件事都在幕后进行,因此现在不再需要手动检查单元是否存在dequeueReusableCellWithIdentifier 将为您处理所有这些

关于ios - 为什么 Apple 改变了 UITableViewCell 的工作顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15003348/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com