将整数发送回上一个View Controller

时间:2017-09-15 20:26:52

标签: ios swift segue alert

您好我正在尝试传回一个具有级别编号的变量。用户清除后面的圆形称为

        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)

在之前的ViewController中,我添加了

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


print(new)

它没有出现。

1 个答案:

答案 0 :(得分:0)

您应该使用segue,然后以这种方式传递 prepare(for:sender:)中的对象,而不是使用 dismiss-present 方法:

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)