2015-09-05 23 views
5

Vorrei sapere come loadNibNamed di NSBundle lavori di classe; In alcuni documenti trovo qualcosa comeObjective C: metodo loadNibNamed: come funziona?

[[NSBundle mainBundle] loadNibNamed:@"mynib" owner:self options:NULL]; 

senza valore di ritorno; appena chiamato all'interno di un metodo (ad esempio cellForRowAtIndexPath se voglio personalizzare la mia cella). In altri documenti trovo:

NSArray* vett=[[NSBundle mainBundle] loadNibNamed:@"mynib" owner:self options:NULL]; 

In questo caso, ad esempio, in cellForRowAtIndexPath, ho potuto

return [vett lastObject]; 

o qualcosa di simile. Quest'ultimo metodo mi sembra chiaro; Carico il pennino in un vettore e quindi utilizzo gli elementi vettoriali. Il problema è capire che cosa esattamente fare il primo:

[[NSBundle mainBundle] loadNibNamed:@"mynib" owner:self options:NULL]; 

alcun valore di ritorno, nessun riferimento di cella ... dove sono gli oggetti della mia pennino? come vengono gestiti? Non capisco come funziona

+2

Non posso dirlo meglio di [documentazione iOS per tale API] (https://developer.apple.com/library/ios/documentation/UIKit/Reference/NSBundle_UIKitAdditions/#//apple_ref/occ/instm/NSBundle/loadNibNamed: owner: options :) o fornisce una panoramica migliore di [questa sezione sull'assegnazione di una vista personalizzata] (https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CocoaViewsGuide/SubclassingNSView /SubclassingNSView.html#//apple_ref/doc/uid/TP40002978-CH7-SW20) –

risposta

5

Ad esempio, si ha un UIView sottoclasse con pennino personalizzato @ "CustomView"

si può caricare:

NSArray * arr =[[NSBundle mainBundle] loadNibNamed:@"CustomView" owner:self options:nil]; 
    CustomView * customView = [arr firstObject]; 
3

Questo metodo restituisce un array di oggetti nel pennino. Ad esempio, se si desidera creare un'istanza di una vista personalizzata, si desidera utilizzare il valore restituito nel modo descritto da anthu.

NSArray * arr =[[NSBundle mainBundle] loadNibNamed:@"CustomView" owner:nil options:nil]; 
CustomView * customView = [arr firstObject]; 

Se invece si desidera utilizzare l'XI ter per configurare proprietario del file (si noti che è possibile passare a un proprietario a questo metodo), non si può essere interessati a matrice che viene restituito. Per esempio. Se lo xib collega gli IBActions e gli IBOutlet del proprietario del file agli elementi nello xib.

[[NSBundle mainBundle] loadNibNamed:@"mynib" owner:self options:nil]; 

È inoltre possibile combinare entrambi gli approcci.