Как выбрать UIImageView с именем объекта - PullRequest
0 голосов
/ 19 февраля 2012

Я добавил 6 UIImageViews в Интерфейсном Разработчике.Они объявлены.

@ свойство (неатомное, сильное) IBOutlet UIImageView * Image1;

@ свойство (неатомное, сильное) IBOutlet UIImageView * Image2;

@ свойство (неатомное, сильное) IBOutlet UIImageView * Image3;

@ свойство (неатомное, сильное) IBOutlet UIImageView * Image4;

@ свойство (неатомное, сильное) IBOutlet UIImageView * Image5;

@ свойство (неатомное, сильное) IBOutlet UIImageView * Image6;

В названии этих UIImageView есть правило - «Изображение» + число.

Я хочувыберите эти ImageViews динамически.Например,

для (NSInteger i = 0; i <6; i ++) {</p>

    if(... condition ) 
    {
       //new 
       [[NSString stringWithFormat:@"Image%d", i+1] setHidden:YES];  //--(1) 
    }
    else
    {
        [[NSString stringWithFormat:@"Image%d", i+1] setHidden:NO];  //--(2) 
    }

}

Но этот код неверен.Пожалуйста, скажите мне более хороший способ.

Ответы [ 3 ]

2 голосов
/ 19 февраля 2012

Предложение jonkroll поместить ваши изображения в массив является хорошим способом сделать это и, как правило, самой высокой производительностью.

Другим способом является использование кодирования значения ключа (KVC) для доступа к вашим свойствам по имени:

for (int i = 0; i < 6; ++i) {
    NSString *key = [NSString stringWithFormat:@"Image%d", i + 1];
    UIImageView *imageView = (UIImageView *)[self valueForKey:key];
    imageView.hidden = condition;
}

Использование тега просмотра, как предлагает Марк, является третьим способом сделать это. В его ответе мало подробностей, поэтому я приведу некоторые.

Вы можете установить метку в своем кончике:

Interface Builder with tag field circled

Таким образом, вы можете установить тег вашего Image1 представления изображения на 1, а тег вашего Image2 просмотра изображений на 2 и т. Д.

Затем вы можете найти представление изображения по его тегу, используя метод viewWithTag: в представлении верхнего уровня:

for (int i = 0; i < 6; ++i) {
    [self.view viewWithTag:i+1].hidden = condition;
}
1 голос
/ 19 февраля 2012

Создайте массив ваших изображений и просмотрите их, используя быстрое перечисление:

NSArray *imageViewArray = [NSArray arrayWithObjects:self.Image1,self.Image2,self.Image3,self.Image4,self.Image5,self.Image6,nil];

for (UIImageView* imageView in imageViewArray) {

    if(... condition ) {
       [imageView setHidden:YES];  //--(1) 
    } else {
        [imageView setHidden:NO];  //--(2) 
    }
}
0 голосов
/ 19 февраля 2012

Как правило, вы можете использовать тег для идентификации ваших представлений вместо использования имени представления.

@ свойство (неатомное) тег NSInteger

см. Здесь:

https://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIView_Class/UIView/UIView.html

как только вы установите тег, вы можете делать такие вещи, как if (uiview.tag == kSomeButtonTag)

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