【发布时间】:2014-02-08 20:47:01
【问题描述】:
我正在开发一个 iOS 应用程序并使用故事板。在我的故事板中,我设置了一个视图控制器作为初始视图控制器。一切正常。
现在我必须在应用程序委托中编写一些登录来决定在开始时显示哪个视图控制器,因为这取决于用户在登录过程中的距离。
所以,我从我的故事板中删除了初始视图控制器标记,并从我的 plist 文件中删除了故事板设置。
现在,在应用委托中我有这段代码 -
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
UIViewController *initialViewController = [storyboard instantiateViewControllerWithIdentifier:[XYZUtils getStartScreenViewController]];
XYZStartScreenViewController *startScreenViewController = (XYZStartScreenViewController *)initialViewController;
[self.window addSubview:startScreenViewController.view];
[self.window setRootViewController:startScreenViewController];
[self.window setBackgroundColor:[UIColor whiteColor]];
[self.window makeKeyAndVisible];
这不显示视图控制器 - 我只是得到一个黑屏并且没有错误消息。在使用断点遍历上述代码时,没有错误。视图控制器正在被实例化,但它没有被显示。
我错过了什么吗?
【问题讨论】:
-
请勿拨打
[self.window addSubview:startScreenViewController.view]; -
@rmaddy 是的,我也试过了,但同样的问题
-
我没有说它会解决问题。 :) 但是设置根视图控制器就足够了。不要也将其添加为子视图。
-
明白。我相信
self.window是nil,因此是问题所在。如果不使用情节提要,则self.window不会自动实例化。必须手动创建一个主UIWindow。不过,不知道该怎么做!
标签: ios iphone objective-c