2015-07-10 45 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

相關問題