Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iOS 9中设置UIWindow rootViewController后,iOS应用程序崩溃_Ios_Objective C_Crash - Fatal编程技术网

在iOS 9中设置UIWindow rootViewController后,iOS应用程序崩溃

在iOS 9中设置UIWindow rootViewController后,iOS应用程序崩溃,ios,objective-c,crash,Ios,Objective C,Crash,在iOS 9上运行之前,我的应用程序一直运行良好 在AppDelegate中,我检查用户是否登录。如果他们没有登录,我会用以下行将他们发送到登录屏幕: self.window.rootViewController = [self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:@"Login"]; self.window.rootViewController = [self.window.

在iOS 9上运行之前,我的应用程序一直运行良好

在AppDelegate中,我检查用户是否登录。如果他们没有登录,我会用以下行将他们发送到登录屏幕:

self.window.rootViewController = [self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:@"Login"];
self.window.rootViewController = [self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:@"Tabs"];
用户登录后,我尝试使用以下行将其发送到主应用程序:

self.window.rootViewController = [self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:@"Login"];
self.window.rootViewController = [self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:@"Tabs"];
这在iOS 8中起作用,但现在它使应用程序崩溃。这是一次严重的碰撞。整个设备必须重新启动(虽然它是一个非常快速的设备,所以我认为它更像是跳板式重新启动之类的)

我真不明白为什么第一行行行得通,第二行不行。非常感谢您的帮助

编辑


我最终重新创建了整个崩溃的UIViewController流,现在一切正常。据我所知,这是新Xcode中的一些奇怪的bug。不认为这是一个答案,所以如果有人有一个真实的答案,请随意分享。

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

我在故事板中有了第一个ViewController,并在那里进行重定向

UIViewController*viewController=[[UIStoryboard情节提要,名称:@“情节提要”
bundle:nil]实例化eviewcontrollerwhiteIdentifier:@“viewController”];
[[[UIApplication sharedApplication]委派]窗口]设置根视图控制器:视图控制器];

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

我在故事板中有了第一个ViewController,并在那里进行重定向

UIViewController*viewController=[[UIStoryboard情节提要,名称:@“情节提要”
bundle:nil]实例化eviewcontrollerwhiteIdentifier:@“viewController”];
[[[UIApplication sharedApplication]委派]窗口]设置根视图控制器:视图控制器];

设置根视图控制器的代码在iOS9中正常工作,没有问题

[[[UIApplication sharedApplication]委托]窗口]setRootViewController:viewController]

如果在该行中发生崩溃,则肯定意味着
viewController
初始化逻辑或其任何子视图在某个点抛出


问题是,在模拟器中工作时,应用程序将崩溃,输出中不会出现错误。这里最好的做法是在
viewController
逻辑(即:
viewDidLoad
)中设置断点,并检查导致错误的行。

设置根视图控制器的代码在iOS9中正常工作

[[[UIApplication sharedApplication]委托]窗口]setRootViewController:viewController]

如果在该行中发生崩溃,则肯定意味着
viewController
初始化逻辑或其任何子视图在某个点抛出


问题是,在模拟器中工作时,应用程序将崩溃,输出中不会出现错误。这里最好的做法是在
viewController
逻辑(即:
viewDidLoad
)中设置一个断点,并检查导致错误的行。

这与我正在做的事情完全相同,但语法不同。没用/问题中的代码与您将其作为答案的代码完全相同!这与我正在做的完全相同,但语法不同。没用/问题中的代码与您将其作为答案的代码完全相同!