19 Stimmen

initWithNibName VS NSBundle's loadNibNamed

Ich habe festgestellt, dass es zwei verschiedene Möglichkeiten zum Laden von nib/xib-Dateien gibt:

  1. über die UIView's initWithNibName:bundle: Methode
  2. NSBundle's loadNibNamed:owner:options: Methode.

Kann jemand die Unterschiede zwischen den beiden erklären und wann und unter welchen Umständen es sinnvoller ist, das eine statt des anderen zu verwenden?

Wenn ich z. B. eine benutzerdefinierte Tabellenabschnitt-Header-Ansicht aus einer Nib-Datei in der tableView:viewForHeaderInSection: Methode lade, welche würde ich dann verwenden?

Oder, wenn ich eine benutzerdefinierte Tabelle Ansicht Zelle aus einer Nib-Datei laden würde, welche würde ich verwenden?

12voto

Nikolai Ruhe Punkte 80427

NSBundle Methoden sind die generische API, die für die Entarchivierung von NIBs verwendet wird. Sie erledigen die eigentliche Arbeit (zusammen mit NSNib ).

UIViewController 's initWithNibName:bundle: ist hingegen eine Möglichkeit, einen View-Controller zu initialisieren, der seine View aus einer Nib laden kann. Die Methode lädt die Nib nicht selbst, sondern merkt sich nur den Namen. Der Controller lädt die Nib erst, wenn der View angefordert wird.

Mir ist nicht bekannt, dass die Federn in UIView .

10voto

prajul Punkte 1196

Wenn der View-Controller Ihres Headers IBOutlets zu beliebigen Feldern in der nib-Datei enthält, ist es besser, wenn laden Sie die Feder Datei, anstatt initWithNib aufzurufen. Ändern Sie im View-Controller der Header-Datei die Initiation-Anweisung wie folgt, wobei die Standardanweisung auskommentiert ist.
Auf diese Weise können Sie mit den IBoutlets auf die Felder in der nib-Datei zugreifen.

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    //self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    // Custom initialization.
    if ([[NSBundle mainBundle] loadNibNamed:@"NibFile" owner:self options:nil]) {

    }

    return self;
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X