如何在不按iOS的按钮的情况下更改UIButton标题/颜色?

Joh*_*gan 3 uibutton ios

下面的代码执行我想要的所有内容(将editButton标题和颜色从正常颜色"编辑"更改为红色"取消"并在按下时返回,除非当editButton显示红色"取消"并按下sendButton时,我想要editButton再次显示正常颜色"编辑".

我做错了什么,或者我还需要做些什么吗?

谢谢,

约翰

- (IBAction)sendClicked:(id)sender {
    if (dontCheck) {
        dontCheck = NO;
        [editButton setTitle:@"Edit" forState:UIControlStateNormal];
        [editButton setTitleColor:[[sendButton titleLabel] textColor] forState:UIControlStateNormal];  
    }
// ...     
}

- (IBAction)editClicked:(id)sender {
    if (dontCheck)  {
        dontCheck = NO;        
        dataLoaded = NO;
        [sender setTitle:@"Edit" forState:UIControlStateNormal];
        [sender setTitleColor:[[submitButton titleLabel] textColor] forState:UIControlStateNormal];
    } else {
        dontCheck = YES;        
        [sender setTitle:@"Cancel" forState:UIControlStateNormal];
        [sender setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
    }
// ...
} 
Run Code Online (Sandbox Code Playgroud)

这对我不起作用:(我确实在xib文件中进行了必要的更改.)

 - (IBAction)sendClicked:(id)sender { 
    if (dontCheck) {
        dontCheck = NO;
        [editButton setTitle:@"Edit" forState:UIControlStateNormal];
        [editButton setTitleColor:[[submitButton titleLabel] textColor] forState:UIControlStateNormal];
        [editButton setSelected:NO];
    }
  // ... 
}

 - (IBAction)editClicked:(id)sender { 
    if (dontCheck) { 
        dontCheck = NO; 
        dataLoaded = NO;
        [sender setTitle:@"Edit" forState:UIControlStateNormal];
        [sender setTitleColor:[[submitButton titleLabel] textColor] forState:UIControlStateNormal];
        [editButton setSelected:NO`];
    } else {
        dontCheck = YES;
        [sender setTitle:@"Cancel" forState:UIControlStateSelected];
        [sender setTitleColor:[UIColor redColor] forState:UIControlStateSelected];
        [editButton setSelected:YES];
    }
    // ...
}
Run Code Online (Sandbox Code Playgroud)

Fel*_*oux 9

您可以为不同的状态设置不同的颜色,例如突出显示,选择,禁用.然后,您无需更改按钮目标操作中的颜色.它还允许您简单地调用任何这些方法来更改按钮状态和外观:

[editButton setDisabled:YES];
Run Code Online (Sandbox Code Playgroud)

要么

[editButton setSelected:YES];
Run Code Online (Sandbox Code Playgroud)

要为不同的状态设置颜色:

[editButton setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[editButton setTitleColor:[UIColor purpleColor] forState:UIControlStateHighlighted];
[editButton setTitleColor:[UIColor greenColor] forState:UIControlStateSelected];
[editButton setTitleColor:[UIColor grayColor] forState:UIControlStateDisabled];
Run Code Online (Sandbox Code Playgroud)