我创建了一个新的基于视图的应用程序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/

10-14 21:32