在AppDelegate中更改根视图控制器时出现黑屏

问题描述 投票:1回答:4

我试图从应用程序委托的didFinishLaunchingWithOptions更改根视图控制器,具体取决于用户是否登录。一旦我超过这个条件,我使用以下代码来更改根视图控制器:

self.window = UIWindow(frame: UIScreen.main.bounds)
self.window?.rootViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "SWRevealViewController") as! SWRevealViewController

self.window?.makeKeyAndVisible()

但是,当我启动应用程序(使用有效的登录用户)时,模拟器首先显示登录屏幕(旧根视图控制器)一秒钟,然后屏幕变黑约30秒到一分钟,然后最终显示期望的视图控制器

故事板中的视图控制器结构如下:

SWRevealViewController - >导航控制器 - >所需视图控制器(新根)

SWRevealViewController开头的原因是因为幻灯片菜单丢失了。

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

ios swift3 xcode8 swrevealviewcontroller
4个回答
0
投票

试试这个:

 UIStoryboard *storyboard  = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
            UITabBarController *tbc = [storyboard instantiateViewControllerWithIdentifier:@"TabBarController"];
            tbc.selectedIndex=[singleton getSelectedTabIndex];
            // tbc.selectedIndex=0;
            //self.window.rootViewController = tbc;
            [self.window setRootViewController:tbc];

            [UIView transitionWithView:self.window duration:0.3 options:UIViewAnimationOptionTransitionCrossDissolve animations:nil

完成:无];

如果这不起作用..请检查您的初始控制器...其中从不尝试加载NSAtrributedString

NSAttributedString * attrStr = [[NSAttributedString alloc] initWithData:[htmlString dataUsingEncoding:NSUnicodeStringEncoding] options:@ {NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType,NSCharacterEncodingDocumentAttribute:@(NSUTF8StringEncoding)} documentAttributes:nil error:nil];

注意: - 当初始控制器ViewDidLoad花费一些时间将UIview加载到内存中时出现黑屏,因为一些懒惰的UI加载资产在ViewDidLoad中完成...

在ViewWillAppear或ViewDidAppear中尝试重载视图代码....

© www.soinside.com 2019 - 2024. All rights reserved.