Изменение текста на UIButton не прилипает - PullRequest
19 голосов
/ 07 апреля 2011

У меня в представлении есть кнопка UIB с надписью «STOP». При нажатии он должен (конечно, остановить воспроизведение и) изменить свою метку на «RTN TO ZERO». Это просто:

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

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

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

Ответы [ 2 ]

52 голосов
/ 07 апреля 2011

В обработчике кнопок попробуйте это:

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

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

3 голосов
/ 02 октября 2015

Swift версия

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

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

...