2013-12-17 7 views
5

Apple Doc sagt Einer der wichtigsten Objekte in einer Nib-Datei ist die Datei Besitzerobjekt, aber es scheint, dass der Eigentümer der Datei in NIB-Datei ist, nicht die von LoadNibName Methode festgelegt. Ich frage mich, was ist der Unterschied zwischen ihnen? HierWas bedeutet der Besitzer bei Verwendung von loadNibNamed?

ist ein Beispiel:

ich eine Alertview von xib anpassen und eine statische Klasse Methode wie folgt bieten:

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

und ich habe eine Methode, um zu zeigen, wachsam zu sehen

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

und in meiner Ansicht Controller:

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

es funktioniert gut in meiner Situation, also ist es notwendig, den Besitzer in [[[NSBundle mainBundle] loadNibNamed: owner: options: zu setzen?

Antwort

2

Nehmen wir an, Sie haben eine NIB-Datei mit einer Tabellenansicht, und der Tabellenansichts-Delegat und die Datenquelle sind im Schnittstellen-Generator an "files owner" angeschlossen. Wenn Sie den Dateibesitzer auf ein Objekt festlegen, ist dieses Objekt die Datenquelle und der Delegat der Tabellenansicht. Dies gilt für alles, was mit dem Besitzer der Datei verbunden ist.

+0

Ich weiß, der Eigentümer der Datei ist wichtig in NIB-Datei, aber ich frage mich, es ist in '[[[NSBundle mainBundle] loadNibNamed: Besitzer: Optionen:', und warum es in meiner Situation funktioniert. – johnMa

+1

Es hat die gleiche Bedeutung, ist Ihre CustomAlert eine Unterklasse von UIAlertView oder UIButton? Wenn es sich um eine Alertview handelt, wie legen Sie den Delegaten fest? Wenn es ein UIButton ist, wie fügt man ein Ziel hinzu? In beiden Fällen benötigen Sie den Besitzer der Datei nicht, wenn Sie es programmgesteuert ausführen. –

+0

Also was meinst du, ist die CustomAlert-Datei Besitzer ist CustomAlert-Klasse, weil ich das Ziel zu CustomAlert-Klasse hinzufügen? – johnMa

Verwandte Themen