ios – 调用UIButton.isHidden = true / false时未更新View
发布时间:2020-12-14 18:01:18 所属栏目:百科 来源:网络整理
导读:我使用 xcode 8.2和 swift来制作一个简单的应用程序. 我使用Interface Builder在我的View中添加了一个UIButton. 我为按钮添加了适当的插座: @IBOutlet weak var myBtn: UIButton! 我希望这个按钮在开始时隐藏,所以在viewDidLoad我设置的是隐藏.像这样: ove
我使用
xcode 8.2和
swift来制作一个简单的应用程序.
我使用Interface Builder在我的View中添加了一个UIButton. 我为按钮添加了适当的插座: @IBOutlet weak var myBtn: UIButton! 我希望这个按钮在开始时隐藏,所以在viewDidLoad我设置的是隐藏.像这样: 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块中
替换以下行 self.showHideSeatButtons() 同 DispatchQueue.main.async { self.showHideSeatButtons() } 注意:UI相关的更改/更新必须由主队列(线程)处理. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |