注册 UITableViewCell 以供重用时,该单元格上的哪个 init 方法被调用? [复制]

Posted

技术标签:

【中文标题】注册 UITableViewCell 以供重用时,该单元格上的哪个 init 方法被调用? [复制]【英文标题】:When registering a UITableViewCell for reuse, which init method on that cell gets called? [duplicate] 【发布时间】:2013-03-06 04:44:52 【问题描述】:

我正在尝试使用 UITableViewCell 的自定义子类,并将其样式设置为 UITableViewCellStyleSubtitle,并将其与 registerClass:forCellReuseIdentifier: 一起使用。但是,我不确定如何执行此操作。

我的想法是重写init方法并调用

self = [super initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:myReuseIdentifier];

在其中。但是,我不知道调用了哪个 init 方法(或者这是否是正确的方法。)

我已尝试拦截以下所有 init 方法,但在使单元格出列时,它们似乎都不是正确的:

init initWithCoder initWithFrame

我已经确认dequeueReusableCellWithIdentifier:forIndexPath: 正在返回一个正确类型的单元格,所以我知道它正在被创建。我只是不知道调用的是哪个init 方法,所以我无法设置默认样式。

【问题讨论】:

【参考方案1】:

我相信它会为表格单元格 init 调用 initWithStyle:reuseIdentifier:。

来自苹果文档

dequeueReusableCellWithIdentifier:

如果您为指定的标识符注册了一个类并且必须创建一个新单元格,则此方法通过调用其 initWithStyle:reuseIdentifier: 方法来初始化该单元格。对于基于 nib 的单元格,此方法从提供的 nib 文件加载单元格对象。如果现有单元格可供重用,则此方法将调用该单元格的 prepareForReuse 方法。

J

【讨论】:

是的,我发布后找到了。将您的答案标记为良好的 S/O 公民身份。【参考方案2】:

[[打头]]我是个白痴!我试图在 init 调用的主体中添加的方法...

initWithStyle:reuseIdentifier:

...我应该覆盖的!

在这里找到...

Setting style of UITableViewCell when using ios 6 UITableView dequeueReusableCellWithIdentifier:forIndexPath:

投票结束我自己的问题。不过,希望这篇文章的简洁性能帮助其他人避免阅读另一篇文章中的多余细节。

【讨论】:

以上是关于注册 UITableViewCell 以供重用时,该单元格上的哪个 init 方法被调用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

无法从出列可重用 UITableViewCell 加载自定义单元格

UITableViewCell 重用时为空白

UITableViewCell 中的 UIButton 标题在重用时发生变化

UItableviewCell 单元格重用问题

如何“取消处置”动画控制器以供重用?

UITableViewCell中的UIButton标题在重用时会发生变化