Как я могу изменить заголовок / цвет UIButton, не нажимая кнопку в iOS? - PullRequest
3 голосов
/ 15 декабря 2011

Приведенный ниже код выполняет все, что я хочу (изменяя заголовок и цвет editButton с обычного цвета «Edit» на красный «Cancel» и обратно при нажатии за исключением , что, когда editButton отображает красный «Cancel» иЯ нажимаю кнопку sendButton, и мне хотелось бы, чтобы кнопка edit снова отображала обычный цвет "Edit".

Я что-то не так делаю или мне нужно что-то еще делать?

Спасибо,

Джон

- (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];
    }
// ...
} 

Это не работает для меня: (Я внес необходимые изменения в файл 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];
    }
    // ...
}

1 Ответ

9 голосов
/ 15 декабря 2011

Вы можете установить разные цвета для разных состояний, например выделено, выбрано, отключено. Тогда вам не нужно будет менять цвета кнопок целевого действия. Это также позволит вам просто вызвать любой из этих методов, чтобы изменить состояние и внешний вид кнопок:

[editButton setDisabled:YES];

или

[editButton setSelected:YES];

Чтобы установить цвета для разных состояний:

[editButton setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[editButton setTitleColor:[UIColor purpleColor] forState:UIControlStateHighlighted];
[editButton setTitleColor:[UIColor greenColor] forState:UIControlStateSelected];
[editButton setTitleColor:[UIColor grayColor] forState:UIControlStateDisabled];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...