【问题标题】:Initializing a view with custom initWithCoder使用自定义 initWithCoder 初始化视图
【发布时间】:2013-08-05 05:16:41
【问题描述】:

为了初始化一个有 xib 的视图,我使用了initWithCoder 函数。但是如果我需要使用自定义参数初始化 xib 怎么办。

我需要这样的东西:

- (id)initWithCoder:(NSCoder *)aDecoder
           andTitle:(NSString *)titleString
{
    self = [super initWithCoder:aDecoder];
    if (self) {
        self.titleLabel = titleString;
    }
    return self;
}

我什么时候调用它?在awakeFromNib之后?

【问题讨论】:

    标签: ios objective-c xib


    【解决方案1】:

    您不能像那样修改initWithCoder: 方法,因为该方法是在您无法控制的协议中定义的。相反,您需要在对象创建后调用 setTitle: 方法,可能在 awakeFromNib 中,或者从拥有的控制器中调用。

    【讨论】:

    • 你不会在 awakeFromNib 中设置自定义字段
    • @SÄN 为什么不在 awakeFromNib 中设置标签文本?
    【解决方案2】:

    您通常不会自己调用 initWithCoder,因此您无法将自定义参数传递给它。该方法将由 nib 加载机制调用,您无法控制它。

    您当然不会从 awakeFromNib 调用它 - 该对象已经被初始化,因此您无法重新调用它。

    最简单的解决方案是将您的自定义参数公开为属性,并在创建视图后设置它们。

    【讨论】:

    • 同意,我当然希望我可以创建一个自定义的 init 方法来传递参数,以便一次性完成。
    • Swift 怎么样...如果我想在 initwithcoder 方法中传递我的自定义属性,我想声明为 let .... 我该怎么做?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-16
    • 1970-01-01
    • 2016-12-24
    • 1970-01-01
    • 2017-05-19
    • 1970-01-01
    相关资源
    最近更新 更多