Как правильно изменить фактический контроллер представления? В загруженном представлении родитель, представленный и презентирующийViewController имеют значение null

У меня есть следующая структура в моем приложении iOS для iPad:

  • RootViewController: Login
    • @property UITabbar *main (which is loaded after login with success);

На appDelegate у меня есть два свойства: окно и логин. На первом я загружаю UIWindow, а на другом LoginViewController (UIViewController). И установите Логин как RootViewController.

При входе в систему у меня есть свойство с именем «main», типизированное как MainController (расширяется UITabbarController).

После успешного входа в систему я использую приведенный выше код для загрузки основного:

[_main setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[self presentViewController:_main animated:YES completion:nil];

MainController был загружен в методе viewDidLoad. У меня два момента:

Мне нужно установить себя в качестве делегата MainController?

Это начало моего метода mainController viewDidLoad:

[super viewDidLoad];
[self setDelegate:self];
NSLog(@"Parent view controller is: %@", [self parentViewController]);
NSLog(@"Presented view controller is: %@", [self presentedViewController]);
NSLog(@"Presenting view controller is: %@", [self presentingViewController]);

Журнал этого:

2013-01-20 21:23:53.180 MyApp[6304:11303] Parent view controller is: (null)
2013-01-20 21:23:53.181 MyApp[6304:11303] Presented view controller is: (null)
2013-01-20 21:23:53.182 MyApp[6304:11303] Presenting view controller is: (null)

Я использую правильный способ представления viewController? Или показать представление после того, как я нажму кнопку или войду в систему? Чего не хватает? Правильно ли я использую иерархию представлений?

Существует ли потребность в свойстве, содержащем контроллер, который будет представлен?

Я ценю с тех пор!


person Káliman Borges    schedule 21.01.2013    source источник


Ответы (1)


Вы сами написали код для делегата приложения и других контроллеров? Если это так, то, поскольку вы не опубликовали остальную часть своего кода, все, что я могу сказать, это инициализировать все ваши контроллеры представления.

YourViewControllerNameHere = [[ViewControllerType alloc] init];

или если у вас есть файл nib/xib/storyboard, то

    YourViewControllerNameHere = [[ViewControllerType alloc] initWithNibName:youInterfaceFileNameHereWithoutFileType bundle:nil];
person Alex    schedule 21.01.2013
comment
Алекс, я их инициализировал. Они корректно загружаются и отображаются, они просто запущены. - person Káliman Borges; 22.01.2013