2012-04-07 63 views
1

所以我有一个调用的API函数,一旦请求完成,它在我的控制器视图调用委托方法,在这里我做一个类:无法更改UIButton的文本颜色的委托方法

[self.myButton setEnabled:NO]; 
self.myButton.titleLabel.textColor = [UIColor grayColor]; 
NSLog(@"%@", self.myButton.titleLabel.textColor); 

要将文本颜色从蓝色更改为灰色,以让用户知道他/她无法第二次单击该按钮。

但是,颜色不变。这是调试日志中的内容:

UIDeviceWhiteColorSpace 0.5 1 

为什么?当我在做同样的事情时:

- (void)viewWillAppear:(BOOL)animated 

它工作并将按钮上的文本颜色更改为灰色。

回答

4

,你可以在你这样做的viewDidLoad

[self.myButton setTitleColor:[UIColor blueColor] forState:UIControlStateNormal]; 
[self.myButton setTitleColor:[UIColor grayColor] forState:UIControlStateDisabled]; 

当你会做的setEnabled:NO,它会自动切换到禁止状态,所以文字颜色将被设置为灰色。

+0

它没有titleLabel部分。 – 2012-04-07 13:16:13

+0

好的!我会更新我的答案:) – Niko 2012-04-07 13:17:47

+0

对于您的信息,它也可以与其他按钮参数一起使用,如文本,背景图像等。 – Niko 2012-04-08 08:55:06

1

您应该在主线程上执行所有UI更新。这可能是问题所在。