iOS5 Storyboard UIViewController, який метод init називається раскадровкою?


Відповіді:


127

Ініціалізатором, що використовується, є initWithCoder:

- (id)initWithCoder:(NSCoder *)decoder

Потім потім ви також отримаєте awakeFromNibповідомлення.


3
Я єдиний, кому здається дивним, що за замовчуванням (?) Init не викликається з initWithCoder?
brianestey

2
Ні, це не призначений init, inits повинен викликати інший init із (загалом) більшою кількістю параметрів, який потім викликав би [super init]. У цьому випадку здається, що initWithCoder призначений init
MrJD

7
initWithCoder: призначений ініціалізатор будь-якого класу, що реалізує NSCoding.
Джон Гесс,

5

Я вважаю, що це так awakeFromNib


awakeFromNib також викликається, оскільки ми UIViewControllers"консервуємо" у вашому файлі .storyboard (еквівалент "старих" наконечників)
Бесі

Різниця (що може бути важливою) між awakeFromNibі init*методами полягає в тому, що вони повертають екземпляр, awakeFromNibні.
Метью

0

Це - (id)initWithCoder:(NSCoder *)decoder

Отже, якщо вам потрібно виконати власну ініціалізацію, скажімо, використовуючи спеціальний контролер пейджера, вам доведеться робити там подобається

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

        self = [super initWithCoder:decoder];
        return [self initWithViewControllers:@[self.playerViewController, self.categoriesViewController]
                  andTitles:@[@"Player",@"Categories"]];
    }
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.