我创建了一个新的基于视图的应用程序xcode项目,我有一组UIViewController
,打算在单独的UINavigationController
中使用。
在所有ParentViewController.m
之前和所有myViewControllers启动之后的UINavigationController
中:
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
,但是当我尝试在MyViewController
中使用navigationController推送SomeOtherViewController
时,它不起作用:- (IBAction)pushDetailView {
[self.navigationController pushViewController:self.detailViewController animated:YES];
}
我在
pushViewController:someOtherViewController
和“po [self navigationController]”之前放置了一个断点,控制台告诉我这是一个nil
参考。我以为
[[UINavigationController alloc] initWithRootViewController:aVC]
,底层机制会将navigationController
分配为aVC.navigationController
,因为Apple“iOS的View Controller编程指南”所做的相同,而没有将navigationController
分配给rootController
。除非我取消标记for循环
//[aVC setNavigationController:navController];
的第二行,否则navigationController
在aVC中不存在。我是否误解了机制?我的案子还有其他解决方案吗?
提前致谢!
最佳答案
_navigationControllers = [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];
}
// assuming index 0 navigation controller is with 'ParentViewController'
self.rootViewController = [_navigationControllers objectAtIndex:0];
检查一下。
关于ios - 将self.navigationController分配为RootViewController后是否为null?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7020812/