【问题标题】:What's the meaning of owner when using loadNibNamed?使用 loadNibNamed 时,owner 是什么意思?
【发布时间】:2013-12-17 02:46:09
【问题描述】:

Apple Doc 说 nib 文件中最重要的对象之一是 File's Owner 对象,但似乎是 nib 文件中的文件所有者,而不是 LoadNibName 方法设置的所有者。我想知道它们之间有什么区别?

这是一个例子:

我从 xib 自定义了一个 alertView 并提供了一个像这样的静态类方法:

+(CustomAlert *)sharedAlert{
    CustomAlert *alert = [[[NSBundle mainBundle] loadNibNamed:@"CustomAlert" owner:nil options:nil]lastObject];
    return alert;
}

我有一种方法可以在视图中显示警报

- (void)showInView:(UIView *)view{
    [view addSubview:self];
}

在我的 viewController 中:

- (IBAction)buttonPressed:(id)sender{
    CustomAlert *alert = [CustomAlert sharedAlert];
    [alert showInView:self.view];
}

在我的情况下效果很好,所以有必要将所有者设置为[[[NSBundle mainBundle] loadNibNamed: owner: options:吗?

【问题讨论】:

    标签: ios objective-c loadnibnamed


    【解决方案1】:

    假设您有一个带有一个 tableview 的 nib 文件,并且 tableviews 委托和数据源连接到界面构建器中的“文件所有者”。如果您将文件所有者设置为任何对象,则该对象将成为 tableview 的数据源和委托。这对于与文件所有者挂钩的任何内容都有效。

    【讨论】:

    • 我知道文件的所有者在 nib 文件中很重要,但我想知道它在 [[[NSBundle mainBundle] loadNibNamed: owner: options: 中的含义,以及为什么它在我的情况下工作。
    • 同一个意思,你的CustomAlert是UIAlertView还是UIButton的子类?如果是alertview,怎么设置delegate?如果它是一个 UIButton 你如何添加目标?在这两种情况下,如果您以编程方式执行此操作,则不需要文件的所有者。
    • 所以你的意思是 CustomAlert 的文件的所有者是 CustomAlert 类,因为我将目标添加到 CustomAlert 类?
    • 不,它没有“文件所有者”,也不需要,因为您以编程方式添加目标“不需要文件所有者”。
    • 所以当在 xib 和用户 [[[NSBundle mainBundle] loadNibNamed: owner: options: 中自定义视图时,您的意见是所有者没有必要对其进行初始化。
    猜你喜欢
    • 2011-07-22
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    • 2017-10-25
    • 1970-01-01
    • 2011-08-12
    • 2017-06-11
    • 2018-03-05
    相关资源
    最近更新 更多