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; 
});