在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)中使用它,否则我无法将TabBarController
与ProfileViewController
类一起使用来实现它。但是,如果我这样做,应用程序将首先在“我”选项卡中显示视图,然后转到“登录”segue,这不是我想要的
非常感谢任何建议
答案 0 :(得分:1)
我建议您直接从UINavigationController
登录UITabBarController
segue而不是“Me”控制器。这是因为如果不在屏幕上,您无法通过“Me”控制器以模态方式显示登录控制器。
给segue一个标识符(例如"my-identifier"
):
在正确配置之后,以下代码将执行登录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仅适用于彼此链接的视图,我个人几乎从未使用它们。