如何解雇启动画面

时间:2014-10-31 18:12:19

标签: ios objective-c

我的应用程序显示启动屏幕视图,在应用程序启动时,数据正在加载其设置为故事板初始视图控制器。当它完成时我想 a)解雇闪屏 b)呈现“真正的初始视图控制器”

我认为它是3个问题的组合:   - 如何获取当前的根控制器   - 如何创建要显示的视图   - 如何呈现视图

这是我的尝试无效,启动视图控制器。请澄清出了什么问题。谢谢!

我在“非视图控制器”代码

的数据加载方法结束时调用此方法
- (void) _showDailyPlan
{
// to get the current root controller
    UIWindow *window = [[UIApplication sharedApplication] keyWindow];
    [window.rootViewController dismissViewControllerAnimated:NO completion:nil];

// create view to show
    UIStoryboard *storyboard = [HCAThemeManager getStoryboard];
    HCASegmentCollectionViewController *dailyPlan = (HCASegmentCollectionViewController*) [storyboard instantiateViewControllerWithIdentifier:@"DailyPlan"];

// present the view
    [window.rootViewController.navigationController pushViewController:dailyPlan animated:YES];
}

1 个答案:

答案 0 :(得分:0)

这是有效的解决方案。它也适用于其他视图层次结构,或者适用于需要在应用程序启动时显示2个不同视图的情况。即" FirstLogin"屏幕," UserNeedsSignUp"屏幕等

在启动时显示ViewN控制器var isShowView1确定要显示的视图

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
...
    NSString *storyboardId = isShowView1 ? @"View1" : @"View2";
    self.window.rootViewController = [self.window.rootViewController.storyboard instantiateViewControllerWithIdentifier:storyboardId];
}

稍后在应用程序生活中我的情况下数据已加载,我需要显示" MainView"

-(void) dataLoadCompleted {
...

   [UIApplication sharedApplication].keyWindow.rootViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"View2"];
}