2015-09-26 51 views
1

设置一个UIWindow RootViewController的经过我的应用程序,直到iOS上的9iOS应用轰然的iOS 9

在AppDelegate中运行它工作的伟大,我检查或没有用户是否登录。如果他们没有登录,我送他们到登录屏幕下面一行:

self.window.rootViewController = [self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:@"Login"]; 

在用户登录后,我试图将它们发送到主应用程序与以下行:

self.window.rootViewController = [self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:@"Tabs"]; 

这工作在iOS 8,但现在它崩溃的应用程序。这是一个糟糕的崩溃。整个设备必须重新启动(虽然它非常快,所以我认为它更像是一个SpringBoard重启或其他)。

对于第一行为什么而第二行不行,我非常茫然。任何帮助深表感谢!

编辑

最后我重新创建一个崩溃的整个流程的UIViewController,现在工作得很好。据我所知,这是新Xcode中的一个奇怪的错误。不考虑这个答案,所以如果任何人有一个真正的答案,然后随意分享。

回答

0

不知道为什么,但这适用于我在iOS9。在窗口正确加载之前,您可能已经尝试在AppDelegate中执行此操作了?

我在故事板中有第一个ViewController,并且这样做是重定向的。

UIViewController *viewController = [[UIStoryboard storyboardWithName:@"Storyboard" 
                  bundle: nil] instantiateViewControllerWithIdentifier:@"viewController"]; 

[[[[UIApplication sharedApplication] delegate] window] setRootViewController:viewController]; 
+0

这与我所做的完全一样,但语法不同。没有工作。 :/ – diakonos

+0

问题中的代码与您将其作为答案完全相同! –

0

的代码来设置根视图控制器在iOS9工作没有问题。

[[[[UIApplication sharedApplication] delegate] window] setRootViewController:viewController];

如果你在该行崩溃,它肯定意味着该viewController初始化逻辑或任何其子视图都在某个点抛出。

问题是,在模拟器中工作的应用程序将崩溃,输出中没有错误。这里要做的最好的事情是在viewController逻辑中设置一个断点(即:viewDidLoad)并检查导致错误的线路。