我需要從代理函數更新按鈕的BG顏色,但是當我嘗試從switch語句內部訪問主線程時,出現編譯器錯誤。如何從SWITCH語句中訪問主GUI線程?
代碼如下
switch (peripheral.state) {
case CBManagerStatePoweredOn:
NSLog(@"Powered on");
[peripheral startAdvertising:_beaconPeripheralData];
dispatch_async(dispatch_get_main_queue(), ^{
_adminPageExitBtn.backgroundColor = [UIColor greenColor];
});
break;
case CBManagerStatePoweredOff:
NSLog(@"Powered Off");
[peripheral stopAdvertising];
break;
case CBManagerStateUnsupported:
NSLog(@"Device not supported");
break;
default:
break;
}
該錯誤消息如下
/Users/mdouhan/Documents/Documents - Mattias’s MacBook/NWMobileTill/NWMobileTill/AdminView.m:161:9: Cannot jump from switch statement to this case label
/Users/mdouhan/Documents/Documents - Mattias’s MacBook/NWMobileTill/NWMobileTill/AdminView.m:150:55: Jump enters lifetime of block which strongly captures a variable
如何正確更新我的按鈕從委託方法的背景色?
嘗試將大小寫包裝在大括號中。在您必須明確定義範圍之前,我遇到了問題。例如:'case CBManagerStatePoweredOn:{/ * code and block here * /} break;' – Stonz2
這將刪除錯誤消息,但按鈕不會改變顏色,但調試會顯示CASE已被擊中 –
您確信按鈕是否正確連接?如果您嘗試在主線程的其他位置更改按鈕顏色,它會起作用嗎? – Stonz2