我需要从代理函数更新按钮的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