Изменение текста на UIButton не сохраняется

У меня есть UIButton в моем представлении, который говорит «СТОП». При нажатии он должен (остановить воспроизведение, разумеется, и) изменить свою метку на «RTN TO ZERO». Это просто:

stopButton.titleLabel.text = @"RTN TO ZERO";

Однако изменение появляется лишь на долю секунды. Это не прилипает. Я предполагаю, что кнопка (которая подсвечивается при нажатии) принимает и отображает новую метку, но каким-то образом выделение меняется только позже, восстанавливая внешний вид кнопки до ее нажатия, не учитывая изменение текста метки. Кнопка задумана в ИБ, а не программно.

Я чувствую себя глупо. Может кто-нибудь указать мне в правильном направлении?


person Joe Völker    schedule 07.04.2011    source источник
comment
В каких событиях у вас есть код для изменения заголовка? Не могли бы вы предоставить более подробную информацию?   -  person Robotic Cat    schedule 07.04.2011


Ответы (2)


В обработчике кнопки попробуйте следующее:

[stopButton setTitle:@"RTN TO ZERO" forState:UIControlStateNormal];

Вместо прямого изменения свойства text элемента titleLabel используйте метод setTitle:forState: для установки заголовка в разных состояниях. Подробнее о доступных состояниях см. в руководстве.

person taskinoor    schedule 07.04.2011
comment
Ты прав. Способность к чтению является преимуществом. Как я уже сказал, я чувствую себя глупо. Большое тебе спасибо! - person Joe Völker; 08.04.2011
comment
Просто как примечание; этот подход не работает, если вы используете атрибутированный текст в IB. Вы должны использовать setAttributedTitle:forState:. - person josh-fuggle; 31.01.2013

Версия для Swift

myButton.setTitle("button text", for: UIControl.State.normal)

Используйте setAttributedTitle:for для атрибутированного текста. См. здесь, как создавать строки с атрибутами в Swift.

person Suragch    schedule 02.10.2015