iOS5 Storyboard UIViewController Welche Init-Methode wird vom Storyboard aufgerufen?


Antworten:


127

Der verwendete Initialisierer ist initWithCoder:

- (id)initWithCoder:(NSCoder *)decoder

Danach erhalten Sie auch eine awakeFromNibNachricht.


3
Bin ich der einzige, der es seltsam findet, dass der Standard-Init (?) Nicht von initWithCoder aufgerufen wird?
Brianestey

2
Nein, es ist nicht der angegebene Init, inits sollte einen anderen Init mit (im Allgemeinen) mehr Parametern aufrufen, der dann [super init] aufrufen würde. In diesem Fall scheint es, dass initWithCoder der designierte init ist
MrJD

7
initWithCoder: ist ein designierter Initialisierer einer Klasse, die NSCoding implementiert.
Jon Hess

5

Ich glaube es ist awakeFromNib


awakeFromNib wird auch aufgerufen, da unsere UIViewControllersin Ihrer .storyboard-Datei "eingemacht" werden (das Äquivalent der "alten" Schreibfedern)
Besi

Der Unterschied (der wichtig sein kann) zwischen awakeFromNibund den init*Methoden besteht darin, dass sie eine Instanz zurückgeben, awakeFromNibnicht.
Matthew

0

Es ist der - (id)initWithCoder:(NSCoder *)decoder

Wenn Sie also einen benutzerdefinierten Init ausführen müssen, verwenden Sie beispielsweise einen benutzerdefinierten Pager-Controller, den Sie dort ausführen müssen

    - (id)initWithCoder:(NSCoder *)decoder {

        self = [super initWithCoder:decoder];
        return [self initWithViewControllers:@[self.playerViewController, self.categoriesViewController]
                  andTitles:@[@"Player",@"Categories"]];
    }
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.