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

标签 ios objective-c swift xcode uibutton

我正在使用 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/

相关文章:

ios - 搜索栏结果在文本旁边添加图像

ios - 如何使用 swift 将文件 Doc/pdf/excel 从 iphone 设备上传到后端?

xcode - 在后台使用 Parse 的注册和 block 时出现 Swift 问题

ios - 从烦人格式的字典中提取值

ios - [UIRoundedRectButton setText :]: unrecognized selector sent to instance?

ios - 如何在将应用程序提交到 App Store 之前更改存档中的图标?

ios - 由于 iOS6 上的全局外观属性,MFMailComposeViewController 崩溃

iphone - ASIHTTPRequest https 请求 & SSL

objective-c - 如何在 NSDictionary 中正确设置整数值?

iphone - NSXMLParser 解析属性