2012-01-07 23 views

Odpowiedz

127

inicjatora stosowany jest initWithCoder:

- (id)initWithCoder:(NSCoder *)decoder 

Następnie potem można otrzymać komunikat awakeFromNib.

+3

Czy jestem jedynym, który uważa za dziwne, że domyślny (?) Init nie jest wywoływany z initWithCoder? – brianestey

+2

Nie, to nie jest wyznaczony init, inits powinien wywoływać inny init z (ogólnie) większą liczbą parametrów, które mogłyby wywołać [super init]. W tym przypadku wydaje się, że initWithCoder jest wyznaczonym init – MrJD

+7

initWithCoder: jest wyznaczonym inicjatorem dowolnej klasy implementującej NSCoding. –

5

uważam, że jest awakeFromNib

+0

awakeFromNib pobiera nazywane też od naszego 'UIViewControllers' są "w puszkach" w twoim pliku .storyboard (odpowiednik "starych" końcówek) – Besi

+0

Różnica (która może być ważna) pomiędzy metodami 'awakeFromNib' i' init * 'polega na tym, że zwracają instancję,' awakeFromNib' nie robi. – Matthew

0

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

Więc jeśli masz zrobić niestandardowego init, powiedzmy przy użyciu niestandardowego Pager Controller trzeba zrobić tam jak

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

     self = [super initWithCoder:decoder]; 
     return [self initWithViewControllers:@[self.playerViewController, self.categoriesViewController] 
        andTitles:@[@"Player",@"Categories"]]; 
    } 
Powiązane problemy