我的应用程序显示启动屏幕视图,在应用程序启动时,数据正在加载其设置为故事板初始视图控制器。当它完成时我想 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];
}
答案 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"];
}