【问题标题】:What method of UIView gets called when instantiated from a NIB?从 NIB 实例化时调用 UIView 的什么方法?
【发布时间】:2010-04-18 18:17:02
【问题描述】:

我有一个简单的自定义视图,它通过插座连接到 NIB。对于这个特定的视图,我希望在视图初始化时对它执行一些操作,无论它在什么 NIB 上。

问题是,(id)init 或 (id)initWithFrame:(CGRect)frame 方法都没有在自定义视图上被调用。

从 NIB 实例化 UIView 时会调用哪个方法?我只会使用视图控制器和 viewDidLoad 方法,只是这个特定的视图出现在许多不同的 NIB 上。

【问题讨论】:

    标签: iphone uiview custom-view


    【解决方案1】:

    您可以使用awakeFromNib 进行这种初始化。当对象实际由 IB 创建并使用NSCoding 存档时,会调用常规初始化方法,因此这些方法永远不会在您的应用程序中调用。您也可以覆盖将被调用的initWithCoder:,但我不建议这样做,因为此时可能没有连接其他插座。

    【讨论】:

    • 完美!出于某种原因,我认为 awakeFromNib 仅限于 UIViewController - 这再次证明,有时只需要第二双眼睛 :)
    • @retailevolved:是的,当加载 nib 文件时,nib 文件中未归档的每个对象(代理对象除外——因为它们实际上并未从 nib 中取消归档)将被发送在所有对象都被取消归档并且所有出口都已连接之后的 awakeFromNib 消息。
    猜你喜欢
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多