我有一个变量名为correctAnswers = 0
在我的程序的顶部,我有一个函数,每次它被称为它将correctAnswers
值加1。我测试了这个函数实际上是通过在每个+1之后打印这个变量来改变这个变量,并且确定它变为1,2,3,4等等。但是我有一个结束的屏幕,显示该程序后的结果(在这种情况下10)已达到其问题极限麻烦传递变量通过segue(Swift)
编辑#2:这里是我的赛格瑞功能准备
func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
if (segue.identifier == "EndScreenSegue") {
let secondViewController = segue.destination as! EndScreen
correctAnswers = sender as! Int
secondViewController.gso = self
}
}
这里是代码在我结束画面:
var gso: GameScreen?
override func viewDidLoad() {
super.viewDidLoad()
gso = GameScreen()
print(gso?.correctAnswers ?? 100)
}
当我打印正确的答案仍然是0。
编辑#3我也尝试过将其通过赛格瑞的这个方法,它是总是零。它不工作的事实与变量在函数中被改变的事实有什么关系?这是我可以想到解释为什么没有任何工作的唯一原因。
func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
if (segue.identifier == "EndScreenSegue") {
let secondViewController = segue.destination as! EndScreen
secondViewController.recievedAnswers = correctAnswers
}
}
class EndScreen: UIViewController{
var recievedAnswers: Int!
override func viewDidLoad() {
super.viewDidLoad()
print(recievedAnswers!)
}
}
编辑#4想通了!我认为。 看来他们改变了prepareForSegue,它不再有效,但xcode不会给你一个错误?是否应该发布另一篇文章呢?实际工作 代码:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "EndScreenSegue"{
let secondViewController = segue.destination as! EndScreen
secondViewController.recievedAnswers = correctAnswers
}
}
'FUNC prepareForSegue(赛格瑞:UIStoryboardSegue!发信人:AnyObject){ 如果(segue.identifier == “EndScreenSegue”){ 让secondViewController = segue.destination作为! EndScreen correctAnswers =发件人为! Int secondViewController。'我做了这个,correctAnswers总是零 –