Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iphone navigationController不会显示,除非我访问。查看_Iphone_Interface Builder_Navigation_Navigationcontroller - Fatal编程技术网

iphone navigationController不会显示,除非我访问。查看

iphone navigationController不会显示,除非我访问。查看,iphone,interface-builder,navigation,navigationcontroller,Iphone,Interface Builder,Navigation,Navigationcontroller,当我为navigationController创建一个iboutlet并尝试将其添加到currentview时,它不会显示任何内容。这真的很奇怪,当我在代码中初始化navigationController,然后将其添加到视图中时,它工作得非常好 当我在mainWindows.xib中创建一个并将其添加到ApplicationIDFinishLaunching方法中的视图时,它甚至可以工作 但是,当我尝试从另一个viewController加载它时,它就失败了,留给我的是一个空白屏幕 因此,当我以

当我为navigationController创建一个iboutlet并尝试将其添加到currentview时,它不会显示任何内容。这真的很奇怪,当我在代码中初始化navigationController,然后将其添加到视图中时,它工作得非常好

当我在mainWindows.xib中创建一个并将其添加到ApplicationIDFinishLaunching方法中的视图时,它甚至可以工作

但是,当我尝试从另一个viewController加载它时,它就失败了,留给我的是一个空白屏幕

因此,当我以编程方式添加它或将它添加到mainWindow.xib中时,它就会工作

我已经试了几个小时让它工作。它看起来很简单,但我无法让它在其他xib文件中工作

我的设置:

#import "RootViewController.h"

RootViewController *rootViewController=[[RootViewController alloc] init];
[window addSubview:rootViewController.navController.view];
我的RootViewController具有指向navigationController的ibOutlet

有人有主意吗?我完全不明白为什么这个简单的东西不起作用。我错过了什么,它让我发疯

****更新**** 如果我将上述代码更改为: 我需要访问rootViewController.view,否则它将无法工作。为什么

#import "RootViewController.h"

RootViewController *rootViewController=[[RootViewController alloc] init];
if(rootViewController.view){
NSLog(@"nil"); 
}
[window addSubview:rootViewController.navController.view];

提前谢谢

每次我遇到这种情况,问题总是在于我忘了在Interface Builder中连接某些东西。确保检查您的控制器是否连接到应用程序代理中的rootViewController插座或任何位置。还要确保窗口已连接


如果某个东西没有连接,那么您在插座中的结果是nil,因此self.rootViewController.navController.view最终是[[nil navController]view],它是nil,并尝试将nil添加为子视图。如果window为nil,您同样会与nil对话,但可能是rootViewController未连接。

这是因为访问
视图实际上调用getter,getter会延迟(按需)创建控制器的视图。
rootController
视图在您第一次调用
view
getter方法之前不存在。创建第一个应用程序视图的常用方法是

[window addSubview:someController.view]

它负责创建视图

我有一个类似的问题,实际上甚至更奇怪,当控制器仅在IB中连接时,应用程序在iPad上可以正常加载,但在iPhone上我有一个空白屏幕,调试器显示控制器的视图有一个0,0,0,0的帧
我通过在ApplicationIDFinishLaunching中的代码中重置rootviewcontroller插座修复了此问题,但我不明白这为什么不起作用

谢谢您的回答!我检查了所有的东西,看起来都正常了,我通过访问rootViewController.view解决了这个问题,但它不知道为什么需要这样做