应用程序启动期间,UITabBarController顶部的ModalView

时间:2014-07-28 23:13:26

标签: ios objective-c cocoa-touch uitabbarcontroller

我有点迷失想要弄清楚......

我有一个基于标签栏的应用程序,一开始就有登录屏幕。登录屏幕应该在模式视图控制器BEFORE标签栏控制器出现时完成。

问题是我只能在TabBarController的viewDidAppear:方法中呈现它。用户可以看到UITabBarController的半秒内容。我已尝试将呼叫转移到viewDidLoad:viewWillAppear:,但它在控制台中记录错误:"其视图不在窗口层次结构中!"。据我所知,只有在加载UIViewControllers的所有子UITabBarController时才能添加ModalViewController,而viewDidAppear:委托方法中会发生广告。

您是否有任何解决方案如何在不显示TabBarController之前显示登录屏幕?

我尝试了两种显示ModalViewController的方法,它们都只在viewDidAppear:中工作

  1. 带登录视图并使用presentViewController:代码

    的XIB文件
    self.loginController = [[LoginViewController alloc] init];
    [self presentViewController:self.loginController animated:NO completion:nil];
    
  2. 故事板,模态segue并从代码中调用它:

    [self performSegueWithIdentifier:@"loginScreen" sender:self];
    

1 个答案:

答案 0 :(得分:1)

您可以考虑将登录屏幕推送到导航堆栈,而不是模态。在viewWillAppear:内,你可以实例化你的登录viewController并推送它。如果您愿意,也可以在viewDidLoad中执行此操作。

-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];

    [self.navigationController pushViewController:yourInstantiatedLoginViewController animated:NO];

}