У меня есть набор кнопок UIB (определенных в xib), которые имеют метки, которые необходимо периодически обновлять.В методе ViewDidLoad контроллера представления суперпредставления этих кнопок у меня есть метод обновления, который делает для каждой кнопки:
button.titleLabel.text = @"Relevant Text";
[button setNeedsDisplay];
, а когда вы нажимаете кнопку, запускается другой метод, который вызывает UIAlertView., который, в свою очередь, вызывает метод на контроллере представления, который делает то же самое, что и метод первоначальной установки текста:
button.titleLabel.text = @"New Text";
[button setNeedsDisplay];
однако этот код просто не работает, текст метки кнопки не 'Обновление в любом из этих методов остается пустой белой кнопкой.В xib я не определяю какой-либо текст на кнопках - нет смысла, текст кнопки не имеет смысла, если он не установлен во время выполнения.Так или иначе, я решил установить для текста одной из кнопок «тестовый тестовый тест».
Теперь, когда я нажимаю на эту конкретную кнопку, она открывает UIAlertView, но в фоновом режиме изменяеттекст кнопки «тестовый тест тестовый тест».И в этот раз обратный вызов UIAlertView делает то, что я ожидаю, и устанавливает текст только для этой кнопки.Когда я нажимаю его снова, текст возвращается назад к «тестовый тестовый тестовый тест», пока я не отклоню UIAlertView, который снова запустит метод обратного вызова и установит текст кнопки в соответствии с тем, какой метод должен.
Я понятия не имею, что здесь происходит, или почему установка текста изначально в xib имеет какое-либо отношение к тому, могу ли я установить этот текст позже программно.Очевидно, что это не то поведение, которое я хочу, я хочу знать, как точно установить текст на кнопках.
Редактировать: совет SVD о setTitle: ForState: решил мою проблему, спасибо.Мне все еще любопытно, почему метка заголовка, установленная в .xib, появляется, но только когда у меня появляется всплывающее окно UIAlertView.