2017-09-15 70 views
0

你好,我正在嘗試返回一個變量,具有級別號碼。在用戶清除下方那個圓圓的被稱爲發送一個整數回到先前的視圖控制器

 if enemyHP <= 0.0{ 
      level = level + 1     
      battle(winPlayer:true) 
     } 

則函數的戰鬥被稱爲

 let alert = UIAlertController(title: "finished!", message: finishedMessage, preferredStyle: UIAlertControllerStyle.alert) 
     alert.addAction(UIAlertAction(title:"Go Back",style:.default,handler:{action in 


     self.dismiss(animated: true, completion: nil)})) 
     self.present(alert,animated: true,completion: nil) 
    } 

我想顯示在一個視圖控制器的級別數,所以我需要變量層面去是傳了回去。這是最好的方法是什麼?我使用了segues,它不適用於警報。

代表

protocol DataSentDelegate { 

    func Back(data: Int) 
} 

我用

delegate?.Back(data: level) 

在前面視圖控制器我加

func Back(data: Int){ 
    new = data 
} 


print(new) 

它不會出現。

+0

您的代碼將無法使用。你正在解僱,那麼你提出? – Brandon

+0

@Brandon你好,它工作。它顯示了警報,它將我帶回。我無法將變量傳回 – Satsuki

+2

請參閱https://stackoverflow.com/questions/5210535/passing-data-between-view-controllers – rmaddy

回答

0

除了使用解僱至今方法,你應該使用賽格瑞然後傳遞對象準備(爲:發件人:)這樣:

func prepare(for segue:UIStoryboardSegue, sender:Any?) 
{ 
    if segue.identifier == "Back" // Give it any name 
    { 
     if let destination = segue.destination as? MyViewController // NOTE: this is your custom view controller class 
     { 
      destination.level = yourDesiredValue 
     } 
    } 
} 

更新:到執行segue:

let alert = UIAlertController(title: "finished!", message: finishedMessage, preferredStyle: UIAlertControllerStyle.alert) 
alert.addAction(UIAlertAction(title:"Go Back",style:.default,handler:{action in 
    self.performSegue(withIdentifier: "Back", sender: nil) 
} 
self.present(alert,animated: true,completion: nil) 
+0

你好謝謝你的回答,我知道關於segues,但這將工作與警報? – Satsuki

+0

@Satsuki我不知道你在做什麼,我不明白你爲什麼試圖在同一個警報的完成回調中提出警報。我想你想在完成塊外面顯示警報,並且當用戶按下警報的「返回」操作時,你想執行該警報。我編輯了答案,我希望它有幫助。 –

+0

謝謝!這做到了。我需要更多地瞭解segues .. – Satsuki

相關問題