Что происходит с моими кнопками UIB в xib? - PullRequest
1 голос
/ 16 августа 2011

У меня есть набор кнопок 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.

1 Ответ

2 голосов
/ 16 августа 2011

Вам может потребоваться использовать [setTitle: forState:], чтобы установить заголовок кнопки для нормального и выделенного (или выбранного) состояния.

(И убедитесь, что кнопка подключена к розетке, как указывает jtbandes).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...