在这种情况下,XIB中的文件所有者是什么?

时间:2015-07-10 06:41:57

标签: ios uiview uiviewcontroller xib custom-component

我已经搜索了类似的问题很长一段时间了,其中大部分提到了UIViewController的xib内容。 我试图为我的自定义viewController模型添加一个xib文件,并发现它的Xib文件所有者应该是我的自定义viewController模型的类 - 这是合理的。但是当我为我的UIView模型创建一个xib时情况有所不同 - 示例如下:

我创建了名为" KWView"(KWView.h和KWView.m)的UIView模型 然后我为这个模型创建xib,通过

初始化它
 KWView *oneView = [[[NSBundle mainBundle] loadNibNamed:@"KWView" owner:nil options:nil ]lastObject];

这个Xib的文件所有者名称是“NSObject”(然后我尝试其他任何更多,无论我选择什么,它运行顺利),在那里,我选择视图的自定义类作为“KWView”[这个xib名为" KWView.xib"]

问题是:

1.无论我更改自定义视图的Xib文件所有者名称,它都可以。如果是这样,这个文件的所有者在这里做了什么工作,或说,为什么会发生这种情况?

2.一般情况下,我应该将自定义视图的Xib文件所有者设置为我的自定义视图的类或viewController的类,该视图将被添加到哪个类中?或者只是设置它" NSObject"?

1 个答案:

答案 0 :(得分:10)

您的问题的答案取决于您打算如何在nib-load时从笔尖中提取视图。正如您向我们展示的那样,您将提取它,如下所示:

KWView *oneView = 
    [[[NSBundle mainBundle] loadNibNamed:@"KWView" owner:nil options:nil]
        lastObject];

这意味着您没有在此使用owner: - 它是nil。因此,您可以将nib的文件所有者留在NSObject。

文件所有者的目的是允许您在nib中建立视图(或其子视图)与将在加载时将成为真实所有者的对象之间的Action和Outlet连接时间 - 类似于视图控制器(所有者)及其view(视图控制器的主视图)。但在你的情况下,没有这样的真实所有者,也没有这样的行动或出口连接。