我正在制作一个测验应用程序,并且具有三个视图控制器,并且我还在使用导航控制器。控制器为:HomeController,LevelsController,PlayController。级别控制器上有100个级别的按钮,并且除级别1以外的所有其他按钮最初都显示为灰色。当我完成关卡时,其他关卡按钮将被解锁并变为可单击状态。
我的问题:仅当我返回HomeController并按,然后再次导航到LevelsController时,此方法才起作用,当我简单地从PlayController返回到LevelsController时,它不会立即更新。
这是我在关卡控制器中的代码:
import UIKit
class LevelsViewController: UIViewController {
var levels = [String]()
override func viewDidLoad() {
super.viewDidLoad()
for k in globalScore...99 {
// print("this is \(k)")
// print(levelButton)
levelButton[k].isEnabled = false
print("Have the levels updated??")
}
}
override func viewWillAppear(_ animated: Bool) {
for k in globalScore...99 {
levelButton[k].isEnabled = false
}
}
@IBOutlet var levelButton: [UIButton]!
@IBAction func levelSelect(_ sender: UIButton) {
self.level = sender.tag
performSegue(withIdentifier: "LevelToPlaySegue", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
print("my name is jacobson")
var vc2 = segue.destination as! PlayViewController
vc2.enteredLevel = self.level
}
}
我的PlayController具有键盘和图像,如果在文本字段中输入了正确的答案,则图像会变为新图像。在分配给globalScore的PlayController的右上角也有一个分数。随着全局得分的增加,用户从PlayController转到LevelsController时,级别页面应为用户提供更多级别。
[您需要做的是更改逻辑,而不是在viewDidLoad上使用它,也应该添加ViewDidAppear和ViewWillAppear,以便每次打开viewController时都调用这些方法,而不是仅第一次执行。 >
Jasc24已经回答了这个问题,但是我正在写对我有用的东西。