Имя переменной IBOutlet для UILabel? - PullRequest
0 голосов
/ 29 августа 2011

Тьфу, тут какие-то проблемы ...

У меня есть 4 метки отображения в Интерфейсном Разработчике, настроенные как IBOutlets в контроллере представления.

Я настроил их с этими именамиlabel1, label2, label3, label4

Я хочу изменить текст метки для случайно выбранной метки

Я пытаюсь это ...

В шапкефайл, который я объявляю как свойство:

@property (nonatomic retain) UILabel *myLabel;

А затем в своем файле реализации я синтезирую и пытаюсь

myLabel = [UILabel valueForKey: [NSString stringWithFormat:@"label%d", randomInt]];

myLabel.text = @"bleh!";

строка myLabel = [UILabel ... вызываетавария.Любая помощь?Спасибо!

1 Ответ

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

У вас правильная идея, но вы должны передать valueForKey: self, а не UILabel, предполагая, что self владеет этими свойствами.

myLabel = [self valueForKey:[NSString stringWithFormat:@"label%d", randomInt]];

В качестве примечания,это, вероятно, лучше сделать с IBOutletCollection.В Xcode 4 выберите все метки и перетащите их в файл заголовка.Это сгенерирует IBOutletCollection NSArray, содержащий все розетки.Затем вы можете выбрать случайный индекс из этого массива.Как правило, к сожалению, IBOutletCollection хранит свои выходы в недетерминированном порядке, но для вашего случая это будет хорошо.

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