2013-12-17 27 views
5

Apple Doc說nib文件中最重要的一個對象是文件所有者對象,但似乎是文件的所有者在nib文件中,而不是由LoadNibName方法設置的那個。我想知道他們之間有什麼區別?使用loadNibNamed時所有者的含義是什麼?

下面是一個例子:

我定製從廈門國際銀行的alertView,並提供一個靜態類方法是這樣的:

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

,我必須顯示在查看警報的方法

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

and in viewController:

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

它適用於我的情況,那麼是否有必要將店主設置爲[[[NSBundle mainBundle] loadNibNamed: owner: options:

回答

2

假設你有一個tableview的nib文件,並且tableviews委託和數據源被連接到界面生成器中的「文件所有者」。如果將文件所有者設置爲任何對象,那麼該對象將是tableview的數據源和委託。這對連接文件所有者的任何內容都有效。

+0

我知道文件的所有者在nib文件中很重要,但是我想知道它在'[[[NSBundle mainBundle] loadNibNamed:owner:options:'中的含義,以及爲什麼它在我的情況下工作。 – johnMa

+1

它的意思是一樣的,你的CustomAlert是UIAlertView還是UIButton的子類?如果它是一個alertview,你如何設置代表?如果它是一個UIButton,你如何添加目標?在這兩種情況下,如果以編程方式執行此操作,則不需要該文件的所有者。 –

+0

所以你的意思是CustomAlert的文件的所有者是CustomAlert類,因爲我將目標添加到CustomAlert類? – johnMa