gpt4 book ai didi

ios - self.navigationController 分配为 RootViewController 后为空?

转载 作者:行者123 更新时间:2023-12-01 17:10:23 25 4
gpt4 key购买 nike

我创建了一个新的 xcode 项目作为基于 View 的应用程序,并且我有一组 UIViewController (s) 我打算在单独的 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 循环中启动的所有导航 Controller 都由 _navigationControllers 保存所以他们不会被释放或成为 nil ,但是当我尝试在 MyViewController 中使用 navigationController 时推 SomeOtherViewController ,它不起作用:
- (IBAction)pushDetailView {
[self.navigationController pushViewController:self.detailViewController animated:YES];
}

我在 pushViewController:someOtherViewController 之前放了一个断点,和“po [self navigationController]”,控制台告诉我这是一个 nil引用。

我以为当我这样做的时候 [[UINavigationController alloc] initWithRootViewController:aVC] ,底层机制将分配 navigationControlleraVC.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 后为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7020812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com