我有点迷失想要弄清楚......
我有一个基于标签栏的应用程序,一开始就有登录屏幕。登录屏幕应该在模式视图控制器BEFORE标签栏控制器出现时完成。
问题是我只能在TabBarController的viewDidAppear:
方法中呈现它。用户可以看到UITabBarController
的半秒内容。我已尝试将呼叫转移到viewDidLoad:
或viewWillAppear:
,但它在控制台中记录错误:"其视图不在窗口层次结构中!"。据我所知,只有在加载UIViewControllers
的所有子UITabBarController
时才能添加ModalViewController,而viewDidAppear:
委托方法中会发生广告。
您是否有任何解决方案如何在不显示TabBarController之前显示登录屏幕?
我尝试了两种显示ModalViewController的方法,它们都只在viewDidAppear:
中工作
带登录视图并使用presentViewController:
代码
self.loginController = [[LoginViewController alloc] init];
[self presentViewController:self.loginController animated:NO completion:nil];
故事板,模态segue并从代码中调用它:
[self performSegueWithIdentifier:@"loginScreen" sender:self];
答案 0 :(得分:1)
您可以考虑将登录屏幕推送到导航堆栈,而不是模态。在viewWillAppear:
内,你可以实例化你的登录viewController并推送它。如果您愿意,也可以在viewDidLoad
中执行此操作。
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self.navigationController pushViewController:yourInstantiatedLoginViewController animated:NO];
}