我可以在UITableviewCell中使用viewDidLoad方法吗?

use*_*457 46 iphone ios

我可以使用viewDidLoad方法UITableviewCell吗?

Abh*_*ngh 80

不,你不在自定义单元类子类UITableViewCell(它是UIViewController的一部分)中编写viewDidLoad.你有一个方法叫做

-(void)layoutSubviews
{
    [super layoutSubviews];
}
Run Code Online (Sandbox Code Playgroud)

您可以在哪里定义框架和所有自定义单元格的控件.请参阅Apple的UITableviewCell参考

但请注意,'viewDidLoad' 在对象的生命周期中被调用一次 ; 它更像是一般OO编程中的初始化器.但是,'layoutSubviews' 在每个单元格上多次调用(取决于滚动等问题).重要的是要意识到,为了这个共鸣你在viewDidLoad中"通常做"的许多事情,你无法在layoutSubviews中做到.

请注意,viewDidLoad 仅被调用一次:layoutSubviews 经常被调用.

如果你写它,它只是一个简单的功能.

自定义单元格教程


Ber*_*eux 14

如果您尝试初始化UITableViewCell的一些IBOutlet,您可能想要进行awakeFromNib()调用:

override func awakeFromNib() {
    super.awakeFromNib()
    // Do your stuff
    // myIBOutlet.text = "Hello" 
}
Run Code Online (Sandbox Code Playgroud)


sup*_*org 11

最好还是打个电话super.layoutSubviews().Swift语法:

override func layoutSubviews() {
    super.layoutSubviews()
}
Run Code Online (Sandbox Code Playgroud)


mar*_*oum 9

AnawakeFromNib()类似于 a viewDidLoad(),因此它的运行频率较低,并且必须为初始化命令调用。

AlayoutSubviews()类似于 a viewWillAppear(),因此当您想更改视图表示中的某些内容时应该调用它。例如,当用户更改手机方向并且应用程序需要更新某些视图的特定配置时,例如大小、颜色和位置。

Apple 关于该awakeFromNib()方法的文档:

概括

在从 Interface Builder 存档或 nib 文件加载后,准备接收器以进行服务。

宣言

func awakeFromNib()

讨论 nib 加载基础结构向从 nib 存档重新创建的每个对象发送一条awakeFromNib 消息,但前提是存档中的所有对象都已加载并初始化。当一个对象接收到一个awakeFromNib 消息时,它保证 已经建立了它的所有出口和动作连接。

您必须调用awakeFromNib 的超级实现,让父类有机会执行它们需要的任何其他初始化。尽管此方法的默认实现什么都不做,但许多 UIKit 类提供了非空实现。您可以在自己的awakeFromNib 方法中的任何时候调用超级实现。