如何在不重新启动页面的情况下更新导航控制器上一页的信息?

问题描述 投票:0回答:2

我正在制作一个测验应用程序,并且具有三个视图控制器,并且我还在使用导航控制器。控制器为: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时,级别页面应为用户提供更多级别。

swift button uinavigationcontroller uinavigationbar levels
2个回答
2
投票

[您需要做的是更改逻辑,而不是在viewDidLoad上使用它,也应该添加ViewDidAppear和ViewWillAppear,以便每次打开viewController时都调用这些方法,而不是仅第一次执行。 >


1
投票

Jasc24已经回答了这个问题,但是我正在写对我有用的东西。

© www.soinside.com 2019 - 2024. All rights reserved.