как перезаписать initWithRootViewController - PullRequest
0 голосов
/ 17 мая 2011

Как я могу перезаписать метод initWithRootViewController в UINavigationController?

Единственные методы, сгенерированные xcode для меня, где такие методы, как loadFromNibName и loadView. Эти методы не вызываются, и мне нужно добавить NSNotification в контроллер навигации при запуске.

Я знаю, это выглядит примерно так, но я не знаю, что заложено в тело метода

- (id)initWithRootViewController:(UIViewController *)rootViewController

{
 // what goes here?
}

EDIT Я предполагаю, что на самом деле вопрос заключается в том, «как настроить UIViewCOntroller во время инициализации»

Редактировать 2

Заголовок моего контроллера навигации

@interface AccountViewNavigationController : UINavigationController {

}
@end

Создание экземпляра моего UINavigationController Like так, что ни один из методов запуска не достигнет точки останова

accountViewNavController = [[UINavigationController alloc] initWithRootViewController:accountView];

Где, как будто я создаю экземпляр, так что loadView действительно вызывается .... но он вызывается много раз

accountViewNavController = [[UINavigationController alloc] init];

[accountViewNavController initWithRootViewController:accountView NO];

Этот этап меня очень смущает.

1 Ответ

2 голосов
/ 17 мая 2011

Используйте ту же базовую структуру, которую вы используете для переопределения любого другого метода init:

- (id)initWithRootViewController:(UIViewController *)rootViewController
{
    if ((self = [super initWithRootViewController:rootViewController])) {
        // Your modifications go here
    }
    return self;
}

Обратите внимание, что Apple утверждает, что UINavigationController «не предназначен для создания подклассов», но они не запрещают это абсолютно.Я предполагаю, что это означает «не пытайтесь изменить работу класса, путаясь с внутренним потоком сообщений».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...