从TabBarController到外部的presentViewController

时间:2014-03-08 16:29:27

标签: ios storyboard uitabbarcontroller

这是我的主要故事板:

Storyboard

正如你所看到的那样有一个主TabBarController,但是为了看到TabBarController用户必须先登录(LoginViewController在主TabBarController之外,这是我在TabBar中所有控制器的viewDidLoad中的代码:

    if ( ![Client isLoggedIn] ) {
         UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:Nil];
         UIViewController* loginView = [storyboard instantiateViewControllerWithIdentifier:@"LoginScene"];
         [self.navigationController presentViewController:loginView animated:YES completion:nil];
         return;
    }

但有时(!)这根本不起作用,应用程序挂起(甚至在卸载应用程序时也没有帮助)

在这种情况下,将用户从TabBarController重定向到另一个ViewController(LoginViewController)的正确方法是什么,这不是TabBarController的子代?

2 个答案:

答案 0 :(得分:2)

您可以将单独的NavigationViewController作为manual modal segueTabbarController相关联。 将identifier设置为segue,然后您可以使用以下代码:

if ( ![Client isLoggedIn] ) {
    [self performSegueWithIdentifier:@"MyModalSegue" sender:self];
}

这应该正常工作。此外,您还可以免费获得模态动画。

答案 1 :(得分:0)

试试替换

[self.navigationController presentViewController:loginView animated:YES completion:nil];

[self presentViewController:loginView animated:YES completion:nil];