2015-07-10 40 views
2

我已经搜索了相当一段时间的类似问题,其中大多数提到UIViewController的xib的东西。 我试图为我的自定义viewController模型添加一个xib文件,并发现它的Xib的文件所有者应该是我自定义的viewController模型的类 - 这是合理的。但是,为什么当我为我的UIView模型创建厦门国际银行的情况有所不同 - 举例如下:在这种情况下,XIB中的文件所有者是什么?

我创造出一个名为“KWView”(KWView.h和KWView.m)我UIView模型 然后创建厦门国际银行对于这种模式,通过

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

这个厦门国际银行的文件的所有者名字初始化它是“NSObject的” (然后我尝试任何其他,不管我选择,它运行平稳),并在那里,我选择视图的自定义类为“KWView”[此xib名为“KWView.xib”]

问题是:

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

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

回答

10

问题的答案取决于您打算如何在笔尖加载时从笔尖提取视图。你要提取它,因为你已经帮忙,告诉我们,像这样:

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

您不使用owner:任何东西在这里也就是 - 它是nil。因此,您可以将NSB的文件的所有者留在NSObject。

文件的所有者的目的是允许你建立,在笔尖,动作和出口连接视图之间(或其子视图)和对象,这将是在加载时真正所有者 - 像视图控制器(所有者)及其view(视图控制器的主视图)。但就你而言,没有这样的真正拥有者,也没有这样的动作或插座连接。

+1

有关笔尖加载过程的更多细节,请参阅我的讨论:http://www.apeth.com/iOSBook/ch07.html#_nib_loading_and_file_8217_s_owner – matt

+0

这让我困惑很久..我是iOS中的新生。 Thx很多,你为我做了一个大忙! – tan

相关问题