我已经搜索了类似的问题很长一段时间了,其中大部分提到了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"?
答案 0 :(得分:10)
您的问题的答案取决于您打算如何在nib-load时从笔尖中提取视图。正如您向我们展示的那样,您将提取它,如下所示:
KWView *oneView =
[[[NSBundle mainBundle] loadNibNamed:@"KWView" owner:nil options:nil]
lastObject];
这意味着您没有在此使用owner:
- 它是nil
。因此,您可以将nib的文件所有者留在NSObject。
文件所有者的目的是允许您在nib中建立视图(或其子视图)与将在加载时将成为真实所有者的对象之间的Action和Outlet连接时间 - 类似于视图控制器(所有者)及其view
(视图控制器的主视图)。但在你的情况下,没有这样的真实所有者,也没有这样的行动或出口连接。