在AppDelegate中实例化初始视图控制器在初始视图之前给出闪烁的黑屏

时间:2014-09-28 18:33:01

标签: ios objective-c cocoa-touch uistoryboard

在某些情况下,我想设置具体的inital view。 基本上是在应用程序的入职和实际使用之间划分。 目前,我正在使用此代码:

- (void)checkWhereUserIsInOnboarding {

  UIStoryboard *mainstoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
  self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];

  if([authStatus isEqual:@3]){ // did get past certain point in onboarding
    UIViewController *initialViewController = [mainstoryboard instantiateViewControllerWithIdentifier:@"connectNav"];
    self.window.rootViewController = initialViewController;
    [self.window makeKeyAndVisible];
  }
  else if(currentUser.objectId == nil){ //no user; he/she is new to the app
    UIViewController *initialViewController = [mainstoryboard instantiateViewControllerWithIdentifier:@"loginNav"];
    self.window.rootViewController = initialViewController;
    [self.window makeKeyAndVisible];
  }
  else{//fully featured users
    UIViewController *initialViewController = [mainstoryboard instantiateViewControllerWithIdentifier:@"tabbarcontroller"];
    self.window.rootViewController = initialViewController;
    [self.window makeKeyAndVisible];
  }

}

由于我需要在应用程序的生命周期内多次检查,因此此函数以ApplicationDidBecomeActive方法运行。

然而,当我将这些VC中的一个作为初始视图实例化时,我总是得到一个黑屏大约100毫秒,然后应用程序进入正确的屏幕。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

A"黑屏"似乎暗示你的应用程序在后台被杀死了。如果您换出应用程序然后调用应用程序切换器,您的应用程序是否显示为黑屏?

作为一个起点,在仪器下运行它并观察内存等事情可能是件好事,以确保IOS不会关闭它。