从UITabBarController(Swift)打开(即转到)特定的segue

时间:2015-10-23 14:38:21

标签: ios swift swift2

Sample Image

在Swift 2中,Xcode 7.1

如上图所示,TabBarController将成为主视图。匿名用户可以转到主页选项卡,如果他们点击“我”(配置文件)选项卡,我希望应用程序会弹出新的登录segue(导航控制器)。用户需要先登录才能进入“我”标签。

目前我已经覆盖了TabBarController类中的TabbarControllerDelegate,如下所示(我使用Parse,所以user = PFUser.currentUser(),Parse将缓存用户):

func tabBarController(tabBarController: UITabBarController, shouldSelectViewController viewController: UIViewController) -> Bool {


    if (viewController is MeViewController && user == nil) {

        print("login \(viewController)")

        // How could I go to the Login Segue from here?

        return false

    } else {
        return true
    }
}

我怎样才能从这里实现目标?或者更好的建议?顺便说一句,除非我在performSegueWithIdentifier类(UIViewController)中使用它,否则我无法将TabBarControllerProfileViewController类一起使用来实现它。但是,如果我这样做,应用程序将首先在“我”选项卡中显示视图,然后转到“登录”segue,这不是我想要的

非常感谢任何建议

2 个答案:

答案 0 :(得分:1)

我建议您直接从UINavigationController登录UITabBarController segue而不是“Me”控制器。这是因为如果不在屏幕上,您无法通过“Me”控制器以模态方式显示登录控制器。

给segue一个标识符(例如"my-identifier"):

  • 单击情节提要编辑器中的segue,并在右侧边栏中填写标识符字段。

在正确配置之后,以下代码将执行登录segue(请注意使用tabBarController,因为您应该从UITabBarController配置segue:

tabBarController.performSegueWithIdentifier("my-identifier", sender: self)

答案 1 :(得分:1)

如果您希望用户在登录前无法找到我,您可以使用静态bolean进行检查,该静态bolean将在app delegate中初始化。 然后,如果将bolean设置为false(默认值),则可以调用登录弹出窗口。 这里没有必要执行一个segue,只是在故事板中的视图上放置一个标识符(身份检查器=>故事板id)然后你可以像这样调用故事板的这个特定视图:

let SB = UIStoryboard(name: "MyStoryboard", bundle: nil)
let controller = SB.instantiateViewControllerWithIdentifier("MyId")
self.presentViewController(controller, animated: true, completion: nil)

Segues仅适用于彼此链接的视图,我个人几乎从未使用它们。