我的应用程序运行良好,直到在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 :(得分:0)
不知道为什么,但这适用于iOS9。在窗口正确加载之前,你可能已经在AppDelegate中尝试这样做了吗?
我在故事板中有第一个ViewController,而是重定向到那里。
UIViewController *viewController = [[UIStoryboard storyboardWithName:@"Storyboard"
bundle: nil] instantiateViewControllerWithIdentifier:@"viewController"];
[[[[UIApplication sharedApplication] delegate] window] setRootViewController:viewController];
答案 1 :(得分:0)
设置根视图控制器的代码可以在iOS9中正常运行。
[[[[UIApplication sharedApplication] delegate] window] setRootViewController:viewController];
如果你在该行中遇到崩溃,那肯定意味着viewController
初始化逻辑或其任何子视图在某个时刻都在抛出。
问题是,在模拟器中工作,应用程序将崩溃,输出中没有错误。这里要做的最好的事情是在viewController
逻辑中设置断点(即:viewDidLoad
)并检查导致错误的行。