2016-09-20 60 views
0

我想将条件添加到按钮。将条件添加到按钮(Swift)

因此,如果条件成立,另一个视图将通过segue打开!

否则,不会发生任何事情,并且会向用户显示警报。

这两个视图由导航控制器链接。

@IBAction func AddButton(_ sender: AnyObject) { 

    if FIRAuth.auth()?.currentUser != nil { 
     self.performSegue(withIdentifier: "AddDevice", sender: nil) 

    } 
    else { 

     let alert = UIAlertController(title: "Sorry", message:"You have to Register First", preferredStyle: .alert) 
     alert.addAction(UIAlertAction(title: "Ok", style: .default) { _ in }) 
     self.present(alert, animated: true){} 
    } 

} 

这是我试过的!但它没有给我想要的结果。

+0

代码有什么问题?我认为它会运作良好。 –

+0

看来我正在使用'self.shouldPerformSegue' instaid of'self.performSegue' – Mariah

+0

所以这就是为什么它没有工作!我匆忙做着,我没有注意到。 – Mariah

回答

1

试试这个!

@IBAction func AddButton(_ sender: AnyObject) { 
FIRAuth.auth()?.addAuthStateDidChangeListener { auth, user in 
    if let user = user { 
    self.performSegue(withIdentifier: "AddDevice", sender: nil) 
    } 
    else { 
    let alert = UIAlertController(title: "Sorry", message:"You have to Register First", preferredStyle: .alert) 
    alert.addAction(UIAlertAction(title: "Ok", style: .default) { _ in }) 
    self.present(alert, animated: true){} 
    } 
} 
} 
+0

其他视图已打开!即使条件不成立! – Mariah

+0

好的,你有没有勾住Addbutton的segue? – Do2

+0

试着将segue从一个视图控制器连接到另一个视图控制器,而不是从按钮到视图控制器。在我的最后,我工作得很好,我已经用你的FIRAuth.auth()替换了你的FIRAuth.auth()?currentUser!= nil,我检查它是否为空执行segue否则不。 – Do2