gpt4 book ai didi

ios - ViewDidAppear 不会在每次应用程序进入前台时执行

转载 作者:可可西里 更新时间:2023-11-01 01:26:54 25 4
gpt4 key购买 nike

我正在使用 Arduino 板构建物联网应用程序并调用 API 来检查 Arduino 板的更新引脚值。

当我从 API 收到更新时,我必须根据收到的数据将我的按钮颜色更新为红色或绿色。我第一次加载应用程序时它工作正常并且调用了 viewDidAppear()。但是当我进入后台然后再次进入前台时,它不会被调用。我所知道的是,每次出现 View 时,它都必须运行函数内部的指令,但似乎并非如此。

我试图将我的代码放在 AppDelagate applicationDidBecomeActive() 中,但是因为我正在尝试更新我的 View ,而 View 还不存在,这给了我致命的打击发现错误为零。这是我在 viewDidAppear()

中的说明
    override func viewDidAppear(_ animated: Bool) {

activityIndicator.startAnimating()

definingPinModes(pin: [7,6,5,4], mode: 1)

getAllInputValues(key: key, method: .post) { (status, newValues, msg) in

if status == 200 {
//Change button colors according to values in array
self.changeButtonColors(values: newValues!)

} else {

print("Error getting pin values")

self.alertMessage(title: "Connection Error", message: "Failed retrieving pin values")
return
}
self.activityIndicator.stopAnimating()
}

}

最佳答案

除了 viewDidAppear 之外,您还可以让 View Controller 观察 UIApplication.didBecomeActiveNotification(以前称为 UIApplicationDidBecomeActive):

private var observer: NSObjectProtocol?

override func viewDidLoad() {
super.viewDidLoad()

observer = NotificationCenter.default.addObserver(forName: UIApplication.didBecomeActiveNotification, object: nil, queue: .main) { [weak self] notification in
self?.updateUI()
}
}

deinit {
if let observer = observer {
NotificationCenter.default.removeObserver(observer)
}
}

override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
updateUI()
}

private func updateUI() {
// do your UI update stuff here
}

关于ios - ViewDidAppear 不会在每次应用程序进入前台时执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41131879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com