【问题标题】:awkakeFromNib,initWithCoder,initWithFrame not being calledawkakeFromNib、initWithCoder、initWithFrame 未被调用
【发布时间】:2015-03-18 19:16:17
【问题描述】:

当单元格为 dequeueReusableCellWithIdentifier 时,在自定义 TableViewCell 中没有调用 awakeFromNib、initWithFrame、initWithCoder。 请注意,单元格是在代码中注册的,例如, [self.tableView registerClass:[RGTableViewCell 类] forCellReuseIdentifier:@"1"]; .一个 RGTableViewCell 正在出队,但没有调用我提到的任何初始化方法。我希望在其中一种方法中进行一些设置。

感谢您的任何提示, 干杯

【问题讨论】:

  • 在哪里创建 RGTableViewCell(代码、xib、情节提要)?
  • 原则上我不必创建它,这就是向tableView注册它的全部意义所在。而且由于我正在注册一个类,它应该通过该类的 initWithFrame,关键字应该。
  • 您必须创建了一个类权限。您的单元格的 .m 和 .h 文件,您在其中实现了这 3 种方法。这就是@LDNZh 的要求
  • 如果不是 nib 则尝试实现 init 方法。这将被调用。
  • 你的单元格使用 xib 文件吗?

标签: ios uitableview


【解决方案1】:

UITableViewCell 的指定初始化程序是 initWithStyle:reuseIdentifier:,如类参考中所述。如果您不使用 xib 或情节提要来创建单元格,则应调用初始化程序。

【讨论】:

  • 金,谢谢先生。我知道必须有一个不同的默认初始化程序,但很难找到哪个。转到developer.apple.com/library/prerelease/ios/documentation/UIKit/… 并搜索“默认初始化程序”没有产生任何结果。你能告诉我们你是如何找到默认初始化器的吗?谢谢
  • @user103412,你应该总是去的第一个地方是类参考。 UITableViewCell 类参考中只列出了一个初始化程序,并且在讨论中声明它是指定初始化程序。
【解决方案2】:

awakeFromNib 和 initWithCoder 通常仅在 XIB 加载器构建视图时调用。既然您说您正在使用自定义单元格类,我假设该类正在创建所有子视图。如果是这种情况,那么我相信标准的 init 方法将在您的自定义 UITableViewCell 类上被调用。

【讨论】:

  • 好吧,从技术上讲,initWithFrame 是 UIView 的默认初始化程序,因此我确实在该位置设置了一个断点,只是发现它没有在那里中断。这就是为什么我感到困惑并开始使用 awkakeFromNib 和 initWithCoder。另外,请注意它仍然没有进入 init。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-30
  • 1970-01-01
相关资源
最近更新 更多