我正在尝试从 UIViewController
访问 navigationController
,由于某种原因它等于 nil
应用委托(delegate):
self.mainViewController = [[MainViewController alloc] init];
self.navigationController = [[UINavigationController alloc] initWithRootViewController:self.mainViewController];
self.window.rootViewController = self.navigationController;
主视图 Controller :
MyViewController *myViewController = [[MyViewController alloc] init];
[self.navigationController presentModalViewController:myViewController animated:YES];
有人遇到过这个问题吗?
谢谢!
最佳答案
您所做的大部分代码都是正确的,但并非所有代码都在正确的地方。 你是正确的, UINavController 应该用 View Controller 初始化。 但是,在您发送的代码中,MainViewController 的 init 方法在导航 Controller 初始化之前完成。
这是因为您真的不应该让 MainViewController 决定何时显示自己。它应该由自身之外的东西初始化和呈现 - 在这种情况下是 AppDelegate。
应用委托(delegate):
MainViewController *mvc = [[MainViewController alloc] init];
self.navigationController = [[UINavigationController alloc] initWithRootViewController:mainViewController];
self.window.rootViewController = self.navigationController;
如果您随后需要 MainViewController 以模态方式呈现某些内容,您应该在 viewWillAppear: 或 viewDidLoad: 中进行,而不是在其 init 方法中进行。或者,在应用委托(delegate)可以调用的 MainViewController (showMyModal
) 上创建一个公共(public)方法。
关于iphone - UIViewController 的 navigationController 为 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13434130/