【问题标题】:navigationController is nil导航控制器为零
【发布时间】:2012-08-20 17:58:56
【问题描述】:

在我的项目世界的根部,我在项目的应用程序委托中声明了一个 UIViewController *viewController。我正在尝试访问视图控制器的 navigationController 字段,以便找到顶部的 ViewController。但是,每次我查看 viewController 的 navigationController 字段时,它都是 nil。很明显我忘了做点什么。想法?谢谢...

【问题讨论】:

  • 在应用程序委托中您是否初始化了一个导航控制器,然后将视图控制器添加到它?您目前如何切换视图?

标签: ios cocoa uiviewcontroller uinavigationcontroller


【解决方案1】:

确保您的导航控制器具有强大的属性。 (如下所示:)

@property (strong, nonatomic) UINavigationController *navcon;

然后在你的应用委托实现文件中合成它。

@synthesize navcon = _navcon;

是的,那么您可以:

self.navcon = [[UINavigationController alloc] initWithRootViewController:yourViewController];
[self.window addSubview:self.navcon.view];

(假设您启用了 ARC)

【讨论】:

  • 谢谢。不是每个 UIViewController 都带有一个 navigationController 字段,我就不用创建一个新的 UINavigationController 了吗?
  • @ron,你的理解是不正确的——视图控制器确实有一个 navigationController 属性,但它只指向一个导航控制器(如果没有嵌入控制器,它返回 nil在导航控制器中)。您需要像 mvb 所说的那样创建导航控制器。
  • 好的,了解并解决了这个问题。现在我有以下问题。在这段代码中 HomeViewController *control = [[HomeViewController alloc] initWithNibName: @"HomeView" bundle: nil]; self.homeViewController = 控制; [self.view insertSubview:self.homeViewController.view atIndex:0]; //UINavigationController *navControl = [[UINavigationController alloc] initWithRootViewController: control];事情按预期工作。但是,如果我删除创建 navControl 的注释,则不会显示所需的屏幕。想法?谢谢...
  • @ron:该文档可能会帮助您更好地了解 UIView 以及随后的视图控制器:developer.apple.com/library/ios/#documentation/uikit/reference/…
猜你喜欢
  • 2014-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-14
  • 1970-01-01
  • 2017-05-14
相关资源
最近更新 更多