UIBarButtonItem 在启用后不会更改默认蓝色
UIBarButtonItem doesn't change default blue color after enabled
在我的代码中我有:
@property (weak, nonatomic) IBOutlet UIBarButtonItem *btnStart;
然后:
- (void)viewDidLoad {
[super viewDidLoad];
self.btnStart.enabled = NO;
}
按钮颜色变为灰色,如果我触摸它,没有任何反应,这是正确的。我还有一段代码:
-(void)session:(MCSession *)session peer:(MCPeerID *)peerID didChangeState:(MCSessionState)state {
if (state == MCSessionStateConnected) {
NSLog(@"I'm connected to peer '%@'", peerID.displayName);
self.btnStart.enabled = YES;
}
}
问题是按钮不会改变颜色,直到我触摸它。 NSLog 完美运行。
您需要在主线程上更新 UI 个元素。
做这样的事情:
dispatch_async(dispatch_get_main_queue(), ^{
//add the needed code below
self.btnStart.enabled = YES;
});
在我的代码中我有:
@property (weak, nonatomic) IBOutlet UIBarButtonItem *btnStart;
然后:
- (void)viewDidLoad {
[super viewDidLoad];
self.btnStart.enabled = NO;
}
按钮颜色变为灰色,如果我触摸它,没有任何反应,这是正确的。我还有一段代码:
-(void)session:(MCSession *)session peer:(MCPeerID *)peerID didChangeState:(MCSessionState)state {
if (state == MCSessionStateConnected) {
NSLog(@"I'm connected to peer '%@'", peerID.displayName);
self.btnStart.enabled = YES;
}
}
问题是按钮不会改变颜色,直到我触摸它。 NSLog 完美运行。
您需要在主线程上更新 UI 个元素。
做这样的事情:
dispatch_async(dispatch_get_main_queue(), ^{
//add the needed code below
self.btnStart.enabled = YES;
});