2011-12-15 3 views
3

Код ниже делает все, что я хочу (изменение названия и цвета editButton от обычного цвета «Редактировать» до красного «Отмена» и обратно при нажатии , за исключением, что когда editButton отображает красный «Отмена», и я нажимаю кнопку sendButton, Я хотел бы editButton, чтобы отобразить нормальный цвет «Edit» снова.Как изменить заголовок/цвет UIButton, не нажимая кнопку в iOS?

Я делаю что-то неправильно, или есть что-то еще мне нужно сделать?

Спасибо,

Джон

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

Если мои ответил помог вам, это обычная любезность на SO, чтобы отметить ответ, как принято, чтобы будущие читатели знали, что ответ полезен. – FelixLam

+0

Извините, я не знал. –

+0

Вот что я подумал. Вы увидите, что с большей вероятностью получите ответы, если помечаете ответы соответственно, пока процент отображается вместе с вашим значком. – FelixLam

ответ

9

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

[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]; 
+0

Спасибо, но я все еще не смог изменить кнопку «Изменить» еще раз «Отменить». –

Смежные вопросы