无法在委托方法中更改UIButton文本颜色

时间:2012-04-07 12:59:32

标签: iphone objective-c ios xcode

所以我有一个调用API方法的类,一旦请求完成,它就会在我的控制器视图上调用一个委托方法,我这样做:

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

要将文字颜色从蓝色更改为灰色,让用户知道他/她不能再次点击该按钮。

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

UIDeviceWhiteColorSpace 0.5 1

为什么呢?当我在:

中做同样的事情时
- (void)viewWillAppear:(BOOL)animated

它可以工作,并将按钮上文字的颜色更改为灰色。

2 个答案:

答案 0 :(得分:4)

您可以在viewDidLoad

中执行此操作
[self.myButton setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
[self.myButton setTitleColor:[UIColor grayColor] forState:UIControlStateDisabled];

当您执行setEnabled:NO时,它将自动切换到禁用状态,因此文本颜色将设置为灰色。

答案 1 :(得分:1)

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