【发布时间】:2017-08-15 20:19:11
【问题描述】:
我在我的程序顶部有一个名为correctAnswers = 0 的变量,我有一个函数,每次调用它时都会将correctAnswers 值加1。我测试了该函数实际上是通过在每个 +1 之后打印它来更改变量,并且确实它会变为 1、2、3、4 等等。但是,我有一个结束屏幕,显示程序达到其问题限制后的结果(在本例中为 10 个)
编辑 #2:这是我为 segue 功能做的准备
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。
EDIT #3 我也尝试过这种通过 segue 传递它的方法,它总是为零。它不起作用的事实与变量在函数中被更改的事实有什么关系吗?这是我能想到的唯一原因来解释为什么没有任何效果。
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
}
}
【问题讨论】: