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

78

Welche initMethode wird vom Storyboard aufgerufen, um sie dem Storyboard UIViewControllershinzuzufügen?

Alex Stone
quelle

Antworten:

127

Der verwendete Initialisierer ist initWithCoder:

- (id)initWithCoder:(NSCoder *)decoder

Danach erhalten Sie auch eine awakeFromNibNachricht.

Firoze Lafeer
quelle
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

Agilityvision
quelle
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"]];
    }
loretoparisi
quelle