Пользовательская реализация UINavigationController - PullRequest
0 голосов
/ 19 октября 2011

У меня есть TabBarController в моем приложении, и в нем у меня есть несколько NavigationController.У меня все это просто сделано в конструкторе интерфейсов.Теперь я хочу реализовать свой собственный навигационный контроллер, поэтому я создал класс:

#import <UIKit/UIKit.h>

@interface DetailNavigationController : UINavigationController

@end


@implementation DetailNavigationController

- (id)initWithRootViewController:(UIViewController *)rootViewController
{
    self = [super initWithRootViewController:rootViewController];
    if (self) {
        NSLog(@"I work!");
    }

    return self;
}

- (void) dealloc {
    [super dealloc];
}

@end

И в Интерфейсном конструкторе я добавил этот класс как Пользовательский класс в нужный мне контроллер навигации.Теперь, когда я запускаю приложение и выбираю вкладку с этим контроллером навигации, он работает, но initWithRootController не вызывается.Я думаю, что он полностью игнорирует класс и работает как контроллер навигации по умолчанию.Нужно ли указывать что-либо еще в конструкторе интерфейсов или мне нужно указывать этот контроллер программно где-то в делегате панели вкладок?Спасибо.

1 Ответ

1 голос
/ 19 октября 2011

Если вы создаете контроллер навигации в конструкторе интерфейсов, вам нужно будет переопределить initWithCoder:, а не initWithRootViewController:.Xib содержит инстанцированную версию вашего объекта с уже установленным корневым контроллером представления.

...