gpt4 book ai didi

UIViewController.navigationController 变为 nil

转载 作者:行者123 更新时间:2023-12-02 09:14:34 32 4
gpt4 key购买 nike

我遇到了一个问题,其中 UIViewController.navigationController 变为 nil,我正在拼命寻找这个问题的答案。

UINavigationController 在应用程序委托(delegate)中进行设置:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

self.rootViewController = [[RootViewController alloc] initWithNibName:@"RootView" bundle:nil];

UINavigationController* navigationController = [[UINavigationController alloc] initWithRootViewController:self.rootViewController];
[self.window addSubview:navigationController.view];

[self.window makeKeyAndVisible];

return YES;
}

RootViewController 出现时,self.navigationController 成员被设置,我可以使用它来隐藏导航栏,如下所示:

- (void)viewWillAppear:(BOOL)animated {
NSLog( @"self = %@, self.navigationController = %@", self, self.navigationController );
[self.navigationController setNavigationBarHidden:YES animated:NO];
}

调试输出显示 selfself.navigationController 的值。

当在此 Controller 中单击按钮时,self 确实保持相同的值,但 self.navigationController 现在为 nil:

- (IBAction)buttonClicked:(id)sender {
NSLog( @"self = %@, self.navigationController = %@", self, self.navigationController );
// here, self.navigationController is nil, so
// [self.navigationController pushViewController:...] doesn't work :-(
}

我已经看到了许多关于此问题的问题,答案始终是 UIViewController 不是 UINavigationController 的一部分。由于在 viewWillAppear 中访问 navigationController 工作正常,我相信一定发生了其他事情。你有什么指点吗?如有必要,我很乐意提供更多详细信息。

最佳答案

在应用程序委托(delegate)中尝试此操作:

[(UINavigationController *)self.window.rootViewController pushViewController:yourViewController animated:NO];

如果你要调试它,rootviewcontroller实际上是UINavigationController。这对我有用。

关于UIViewController.navigationController 变为 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8845355/

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