2016-09-20 96 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