我试图从应用程序委托的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
开头的原因是因为幻灯片菜单丢失了。
关于可能发生什么的任何想法?
试试这个:
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中尝试重载视图代码....