我正在开发iOS应用并使用故事板。在我的故事板中,我将视图控制器设置为初始视图控制器。一切正常。
现在我必须在app delegate中写一些登录来决定在开始时显示哪个视图控制器,因为这取决于用户在登录过程中的距离。
因此,我从故事板中删除了初始视图控制器标记,并从plist文件中删除了故事板设置。
现在,在app委托中我有这段代码 -
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];
这不显示视图控制器 - 我只是得到黑屏并且没有错误消息。在使用断点来浏览上面的代码时,没有错误。视图控制器正在实例化,但未显示。
我在这里错过了什么吗?
答案 0 :(得分:1)
阅读这篇文章.. 最好制作一个空视图控制器并将其标记为初始视图控制器 并在该视图控制器的viewDidLoad方法中执行所有登录过程。
答案 1 :(得分:0)
出于某种原因,当你取消选择故事板中的初始视图控制器设置时,你的应用程序将无法在didFinishLaunching中获得UIWindow设置。
那么,你应该如何在那里实例化你自己的窗口;只需将其添加到application didFinishLaunchingWithOptions
方法的开头:
UIWindow* window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
我认为这个解决方案非常好,但是因为你正在使用故事板,所以它是一个“更干净”的解决方案,它有一些“LoginManagerViewController”作为你的初始视图控制器,负责根据有多远来处理下一步做什么用户正在登录过程中。