gpt4 book ai didi

ios - 调用 UIButton.isHidden = true/false 时 View 未更新

转载 作者:搜寻专家 更新时间:2023-10-30 21:53:11 26 4
gpt4 key购买 nike

我正在使用 xcode 8.2swift 制作一个简单的应用程序。

我使用 Interface Builder 向我的 View 添加了一个 UIButton

我已经为按钮添加了合适的 socket :

@IBOutlet weak var myBtn: UIButton!

我希望这个按钮在开始时隐藏,所以在 viewDidLoad 中我设置为 Hidden。像这样:

override func viewDidLoad() {
super.viewDidLoad()
...
myBtn.isHidden = true
...
mqttConfig = MQTTConfig(clientId: "iphone7", host: "192.xx.xx.150", port: 18xx, keepAlive: 60)

mqttConfig.onMessageCallback = { mqttMessage in
if ( mqttMessage.topic == "status" ) {
if ( mqttMessage.payloadString?.localizedStandardContains("show") )! {
self.showButton = true
} else if ( mqttMessage.payloadString?.localizedStandardContains("hide") )! {
self.showButton = false
}
self.showHideSeatButtons()
} else {
// something to do in case of other topics
}
}

稍后在代码中我有一个显示/隐藏此按钮的函数。

func showHideButton(){
if ( self.showButton ) {
print("button enabled!")
myBtn.isHidden = false

} else {
print("button disabled!")
myBtn.isHidden = true
}
}

当我调用此函数(通过使用 MQTT 接收特定消息)时,我得到了打印输出,但我没有看到按钮。如果我按下我知道按钮所在的位置,就会显示该按钮。

知道这里会发生什么吗?我已经花了一个小时谷歌搜索这个了!请不要建议 object-c 解决这个问题的方法,因为我不知道 object-c

最佳答案

在 onMessageCallback block 中

替换下一行

self.showHideSeatButtons()

DispatchQueue.main.async {
self.showHideSeatButtons()
}

注意:UI 相关的更改/更新必须由主队列(线程)处理。

关于ios - 调用 UIButton.isHidden = true/false 时 View 未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42999646/

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