设置keyWindow rootViewController在iOS8中不起作用

设置keyWindow rootViewController在iOS8中不起作用,第1张

概述在我的应用程序中,我需要用户登录和注销.当我希望用户注销时,我会删除他们的凭据然后: ZSSLogin *login = [self.storyboard instantiateViewControllerWithIdentifier:@"ZSSLogin"];[[UIApplication sharedApplication].keyWindow setRootViewController:[ 在我的应用程序中,我需要用户登录和注销.当我希望用户注销时,我会删除他们的凭据然后:

ZSSLogin *login = [self.storyboard instantiateVIEwControllerWithIDentifIEr:@"ZSSLogin"];[[UIApplication sharedApplication].keyWindow setRootVIEwController:[[UINavigationController alloc] initWithRootVIEwController:login]];

假设用登录vIEwController替换当前的rootVIEwController(tabbarController).

在iOS7上,这可以正常工作.但是,在iOS8中,它将显示登录VC一瞬间,但然后返回到tabbarController,就像没有发生任何事情一样.

关于发生了什么的任何想法?

解决方法 我有完全相同的问题,登录VC将显示一瞬间,然后返回我的SplitVIEwController,只有iOS8,iOS7工作正常.

在我的场景中,这只发生在我在注销之前提交AlertVIEw时,如果我直接更改rootVIEwController而没有AlertVIEw它工作正常.

所以我用这个简单的解决方法修复了它:

- (voID)alertVIEw:(UIAlertVIEw *)alertVIEw clickedbuttonAtIndex:(NSInteger)buttonIndex {...    // Added a delay to avoID an iOS8 BUG,where setting rootVIEwControler doesn't work after dismissing an AlertVIEw. (For some reason dispatch_after isn't working here)    [self performSelector:@selector(logout) withObject:nil afterDelay:0.5];...

我的猜测是在iOS8中,OS使用Window或rootVIEwController来设置和删除AlertVIEw,存储对rootVIEwController的引用,然后在解除AlertVIEw后将rootVIEwController设置为该引用.因此,如果您在 *** 作系统将其设置回来之前更改rootVIEwController,它将替换您的更改.如果等待半秒直到 *** 作系统完成对rootVIEwController的更改,问题就解决了.当然,这是一个假设.

总结

以上是内存溢出为你收集整理的设置keyWindow rootViewController在iOS8中不起作用全部内容,希望文章能够帮你解决设置keyWindow rootViewController在iOS8中不起作用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1060932.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存