1
我試圖從viewcontroller只有當我的條件得到滿足時,才能從secondviewcontroller。我已經從viewcontroller中的按鈕連接到2ndviewcontroller。到目前爲止,我有:有條件的segue傳遞數據?
@IBAction func switchView(_ sender: AnyObject) {
// if a and b's textfields aren't empty
if(!(a.text?.isEmpty)! && !(b.text?.isEmpty)!) {
a1 = a.text!;
b1 = b.text!;
}else{
// do something
}
}
override func shouldPerformSegue(withIdentifier identifier: String, sender: Any?) -> Bool {
if(identifier == "2ndviewcontroller") {
if(!(a.text?.isEmpty)! && !(b.text?.isEmpty)!) {
return true
}
}
return false
}
有了這個,我已經能夠使SEGUE只有當A和B的文本字段不爲空。這正是我想要的,但我也希望將數據從viewcontroller傳遞給2ndviewcontroller。
func prepForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "2ndviewcontroller" {
let 2ndviewcontroller = segue.destination as! 2ndviewcontroller
2ndviewcontroller.c = a
}
}
}
我使用上面的代碼將數據從viewcontroller傳遞到2ndviewcontroller。問題是我不知道如何將它們合併到傳遞數據中,並且只有在滿足條件時纔會使其延續。當我有兩個函數時,bool函數正確執行,但prepForSegue不傳遞數據。當我將bool函數註釋掉時,prepForSegue會傳遞數據,但我無法應用製作segue的條件。
編輯:通過使用下面的評論中提供的prepareForSegue方法修復。
你爲什麼要合併它們?他們是兩種不同的方法。一旦決定是否執行segue,另一個允許您根據需要傳遞數據。如果賽格不應執行,你會傳遞什麼數據? –
當我有兩個函數時,布爾函數正確執行,並在條件滿足時進行延遲。但是,傳遞數據的函數不起作用。當我註釋掉布爾函數時,我可以很好地傳遞數據,但是當我點擊按鈕時,無論條件是否滿足,當然我都會繼續。我已更新我的問題以澄清。 – Chrine
兩者都應該被執行。正確的方法名稱是'prepareForSegue',而不是'prepForSegue'。 –