用swift关闭视图

时间:2016-07-05 14:38:27

标签: ios swift

在我的HomeViewController中,我有两个segue,一个在单击一个单元格时处于活动状态,另一个在单击条形按钮项目titeled join list时处于活动状态。单击条形按钮项目时,我想检查用户是否已登录。如果用户没有登录,我想要出现LoginViewController界面,如果他已登录,我想要出现joinViewController的界面。我通过从连接intem到joinViewController按住ctrl从故事板创建了连接segue,这是我的代码

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

       if segue.identifier == "detail" {
        var detailScene=segue.destinationViewController as! DetailViewController
        if let indexPath=self.table.indexPathForSelectedRow{
            let selectedPerson=listPerson[indexPath.row]
            detailScene.person=selectedPerson
        }}

        else
        if segue.identifier == "join"{

            if !userLoggedIn{
                let vc : AnyObject! = self.storyboard!.instantiateViewControllerWithIdentifier("LoginViewController")
                self.presentViewController(vc as! UIViewController, animated: true, completion: nil)

            }

        }

        }

一切正常但在LoginViewController中我添加了IBAction以关闭视图

class LoginViewController: UIViewController {
    @IBAction func dismissView(sender: AnyObject) {
        self.dismissViewControllerAnimated(true, completion: nil)

单击该按钮时,将加载joinViewController而不是homeViewControlled。我做了什么干净,如何修复解雇按钮?

1 个答案:

答案 0 :(得分:0)

如果您想动态选择要显示的segue,则不应将其设置为UIBarButtonItem。我的建议是将两个segueHomeViewController拖到LoginViewControllerJoinViewController,其名称为loginSeguejoinSegue

UIBarButtonItem创建IBActionHomeViewController。在代码中它应该看起来像这样:

@IBAction func barButtonItemPressed(sender: AnyObject) {
  if userLoggedIn {
    self.performSegueWithIdentifier("joinSegue", sender: self)
  } else {
    self.performSegueWithIdentifier("loginSegue", sender: self)
  }
}

我不确定您对解雇按钮的要求。但是,您无法覆盖prepareForSegue以选择在此阶段显示哪个UIViewController,它已经会显示UIViewController