我正在制作一个蓝牙应用程序,我想放置2个标签来控制是否已连接并显示RSSI,所以我已经编写了此功能
func updateLabel(){
LRSSI.text = String(RSSINb)
if(Connected == true){
LEtat.text = "Connected"
LEtat.textColor = UIColor.green
}else{
LEtat.text = "Disconnected"
LEtat.textColor = UIColor.red
}
}
我从CBPeripheral的ReadRSSI函数中调用此函数。
我的终端中有此文字
Main Thread Checker: UI API called on a background thread: -[UILabel setText:]
但是,当我旋转手机以更新标签时,我尝试将“ self”放在标签前。
我也尝试在计时器内调用函数,但这给了我SIGBART错误
那么,有没有一种方法可以更新标签或重新加载ViewController?
编辑: 调用我的函数:
func peripheral(_ peripheral: CBPeripheral, didReadRSSI RSSI: NSNumber, error: Error?) {
print(RSSI)
peripheral.readRSSI()
RSSINb = Int(RSSI) * -1
updateLabel()
if(RSSINb > 150){
WriteValue(valeur: "z")
}
}
答案 0 :(得分:0)
已解决的问题:
func peripheral(_ peripheral: CBPeripheral, didReadRSSI RSSI: NSNumber, error: Error?) {
print(RSSI)
peripheral.readRSSI()
RSSINb = Int(RSSI) * -1
DispatchQueue.main.sync {
updateLabel()
}
if(RSSINb > 150){
WriteValue(valeur: "z")
}
}