尝试切换 UIButton 上的 selected 和 enabled 属性,因此创建 4 个潜在状态(Selected & Disabled、Selected & Enabled、Unselected & Disabled、unselected & Enabled)。
在 viewDidLoad 我定义了按钮状态的图像
- (void)viewDidLoad
{
[super viewDidLoad];
[self.inputToolbar.contentView.leftBarButtonItem setImage:[UIImage imageNamed:BLUE_IMAGE] forState:UIControlStateNormal];
[self.inputToolbar.contentView.leftBarButtonItem setImage:[UIImage imageNamed:GREY_IMAGE] forState:UIControlStateSelected];
}
在 viewWillAppear 中,我有条件地设置 enabled 属性以及一个属性(我们将调用 self.buttonShouldBeSelected),然后在其设置器中设置 UIButton 的 selected 属性。连同 viewDidLoad 中的一些调试代码
- (void) viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
// default control states
self.inputToolbar.contentView.leftBarButtonItem.enabled = NO;
if (self.aBoolean) {
self.buttonShouldBeSelected = [self.aNSNumber boolValue];
}
}
- (void)setButtonShouldBeSelected:(BOOL)buttonShouldBeSelected
{
self.inputToolbar.contentView.leftBarButtonItem.selected = buttonShouldBeSelected;
_buttonShouldBeSelected = buttonShouldBeSelected;
}
- (void)viewDidAppear
{
NSLog(@"SELECTED: %u", self.inputToolbar.contentView.leftBarButtonItem.selected);
NSLog(@"ENABLED: %u", self.inputToolbar.contentView.leftBarButtonItem.enabled);
NSLog(@"STATE: %lu", self.inputToolbar.contentView.leftBarButtonItem.state);
}
这在所有情况下都有效,除了一种,当按钮被禁用并处于选定状态时。在这种情况下,UI 显示 BLUE_IMAGE 而不是所选状态的 GREY_IMAGE,并且按钮被正确禁用。
在这种情况下,日志会导致...
SELECTED: 1
ENABLED: 0
STATE: 6
我做错了什么,为什么显示 NormalState 的图像以及 UIControlState == 6 是什么意思?