Я создал новый проект xcode как приложение на основе View, и у меня есть набор UIViewController
, который я планирую использовать внутри отдельных UINavigationController
(s).
В ParentViewController.m
до того, как все UINavigationController
(s) и после того, как все myViewControllers были инициированы:
NSMutableArray *navControllers = [[NSMutableArray array];
for (id aVC in self.myViewControllers) {
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:aVC];
//[aVC setNavigationController:navController];
[navController setNavigationBarHidden:YES];
[navController setToolbarHidden:YES];
[navControllers addObject:navController];
[navController release];
}
_navigationControllers = [[NSArray arrayWithArray:navigationControllers] retain];
_navigationControllers
сохраняется как член ParentViewController
, поэтому я предполагаю, что все мои контроллеры навигации, инициированные внутри, for-цикл хранится _navigationControllers
, поэтому он не будет освобожден или станет nil
, но когда я пытаюсь использовать navigationController в MyViewController
для нажатия SomeOtherViewController
, он не работает:
- (IBAction)pushDetailView {
[self.navigationController pushViewController:self.detailViewController animated:YES];
}
Я ставлю точку останова перед pushViewController:someOtherViewController
и "po [self navigationController]", консоль говорит мне, что это ссылка nil
.
Я предполагал, что когда я делаю [[UINavigationController alloc] initWithRootViewController:aVC]
, базовыймеханизм назначит navigationController
как aVC.navigationController
, потому что Apple "View Controller Programming Guide для iOS" делает то же самое, не назначая navigationController
для rootController
.
Если я не отмечу вторую строкуfor-loop //[aVC setNavigationController:navController];
, navigationController
не существует в AVC.
Я неправильно понимаюмеханизм?Есть ли другое решение для моего случая?Заранее спасибо!