1

所以我有一个调用 API 方法的类,一旦请求完成,它会在我的控制器视图上调用一个委托方法,我在其中执行以下操作:

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

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

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

UIDeviceWhiteColorSpace 0.5 1

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

- (void)viewWillAppear:(BOOL)animated

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

4

2 回答 2

4

您可以在 viewDidLoad 中执行此操作

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

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

于 2012-04-07T13:04:37.690 回答
1

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

于 2012-04-07T13:02:08.253 回答