Скрытие всех UILabels в NSMutableArray - PullRequest
1 голос
/ 05 августа 2011

У меня есть различные метки UILabel, которые я хотел бы скрыть с помощью цикла for.

@interface MyViewController : UIViewController {
 NSMutableArray * labelArray;
}
@property (nonatomic, retain) IBOutlet UILabel *label1, *label2, *label3;
...
-(void)viewDidLoad {
 [super viewDidLoad];
 [labelArray initWithObjects:label1,label2,label3,nil];

 for(int i=0; i<sizeof(labelArray); i++){
  UILabel *label = [labelArray objectAtIndex:i];
  label.hidden = !label.hidden;
 }
}

Когда это выполняется, метки не скрываются. Они были «подключены» в Интерфейсном Разработчике. Что я делаю неправильно? Спасибо!

1 Ответ

3 голосов
/ 05 августа 2011

Это не то, для чего sizeof. Это конструкция компилятора, которая сообщает вам, сколько байтов занимает значение, и не имеет ни малейшего представления, сколько элементов содержится в NSMutableArray во время выполнения. Вы хотите:

for (UILabel *label in labelArray) {
    label.hidden = !label.hidden;
}

Если это не сработает, то ваш массив не содержит объектов, которые, как вы считаете, он делает - вполне возможно, вы забыли создать массив - просто отправка init на ноль не создает объект. В любом случае, вы, вероятно, должны делать labelArray = [[NSMutableArray alloc] initWithObjects:label1,label2,label3,nil];. alloc и init идут рука об руку в перчатку.

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