将nil rootViewController推送到目标上

时间:2011-10-21 21:42:07

标签: objective-c ios uinavigationcontroller ios5 xcode4.2

我整天都在研究这个问题,但是我没有找到与此错误消息有关的rootViewController。我知道问题是什么,但不知道如何解决它。我的问题是我的window.rootViewController没有连接或显示为null,我无法弄清楚该怎么做。我在代码和IB中尝试了所有我能想到的东西,但每当我改变某些东西时都会发生不好的事情。这是我得到的消息:“应用程序试图在目标UINavigationController上推送一个nil视图控制器”

我可以从NSLog语句中看到window.rootViewController: “window.rootViewController:(null)”

当然,在将我的Xcode升级到4.2和ios5之前,一切都运行良好。 :)

顺便说一句 - 视图加载但我无法使用任何按钮,它们根本不亮。我的导航工作也很好。

这是我的appDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

[DDLog addLogger:[DDTTYLogger sharedInstance]];
NSLog(@"Viewcontroller : %@", self.viewController);

// Set the view controller as the window's root view controller and display.
//self.window.rootViewController = self.viewController;
//do it this way, previous version not supported in ios5 - may need to check version for compatibility
[self.window addSubview:self.viewController.view];

//set up navigation controller
NSLog(@"window.rootViewController : %@", self.window.rootViewController);
navigationController = [[UINavigationController alloc]
                        initWithRootViewController:self.window.rootViewController];
navigationController.navigationBarHidden = YES;

NSLog(@"navigationController : %@", navigationController);
[window addSubview:navigationController.view];
[window makeKeyAndVisible];

//force this view to be landscape
[application setStatusBarOrientation: UIInterfaceOrientationLandscapeRight animated:NO];
[self.navigationController.view setTransform: CGAffineTransformMakeRotation(M_PI / 2)];
[self.navigationController.view setFrame:CGRectMake(0, 0, 748, 1024)];
[UIView commitAnimations];  


return YES;

}

谢谢。

1 个答案:

答案 0 :(得分:0)

根据文件:

  

讨论   根视图控制器提供窗口的内容视图。将视图控制器分配给此属性(以编程方式或使用Interface Builder)将视图控制器的视图安装为窗口的内容视图。如果窗口具有现有视图层次结构,则在安装新视图之前将删除旧视图。

仔细检查您的nib文件以确保它已连接。

虽然“应用程序试图在目标UINavigationController上推送一个nil视图控制器”听起来好像你可能会丢失你的VC引用。这个属性是如何设置的?它保留了吗?

以下是文档。

http://developer.apple.com/library/ios/documentation/uikit/reference/UIWindow_Class/UIWindowClassReference/UIWindowClassReference.html#//apple_ref/doc/uid/TP40006817-CH3-SW33