2014-01-06 3 views
0

Скажите, что у меня есть 60-70 UIImageViews, и я хочу динамически загружать одно и то же изображение во все из них одновременно (так сказать).Установите изображение для многих UIImageViews

Например, если я работал с веб-страницей с 60-70 div, и я хотел дать им все фоновое изображение, я бы дал им все класс myDivs и позвонил `$ ('. MyDivs'). css ('background-image', 'url (' + imageUrl + ')');

Я знаю, как установить изображение UIImageView, но есть ли простой способ установить связку сразу в Objective C?

Я действительно пытался поискать, но меня затопило тонны вещей, которые действительно не связаны.

ответ

1

Это зависит от способа отображения изображения (ов). Если вы используете UITableView или UICollectionView, в методе cellForRowAtIndexPath: вы можете динамически обновлять изображение, помещенное в ячейку.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath]; 

    // Configure the cell... 
    [self setCell:cell forIndexPAth:indexPath]; 

    return cell; 
} 

- (void)setCell:(UITableViewCell *)cell forIndexPAth:(NSIndexPath *)indexPath 
{ 

    __weak UITableViewCell *weakCell = cell; 

    // 5. add picture with AFNetworking 
    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"www.facebook.com/profileImageLocation"]]; 
    [cell.profileImage setImageWithURLRequest:request 
             placeholderImage:nil 
               success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) { 
                weakCell.profileImage 
                .image = image; 

               } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) { 
                NSLog(@"bad url? %@", [[request URL] absoluteString]); 
               }]; 
} 

Другим вариантом будет использовать для цикла, как это:

- (void)addImagesToAllMyImageViews:(NSArray *)images 
{ 
    for (id obj in images) { 

     if ([obj isKindOfClass:[UIImageView class]]) { 

      UIImageView *imageView = (UIImageView *)obj; 

      imageView.image = [UIImage imageNamed:@"someImage.png"]; 
     } 
    } 
} 
+0

Действительно? нет ли более простого способа сразу установить свойство изображения группы UIImageViews сразу? Я имею в виду, что я получаю то, что происходит в выше, но это почти такой же код, как и для imageView1.image = myImage 60 раз. (не совсем, но близко ...) – DelightedD0D

+0

Ну, вы не указали, как вы хотите отображать изображения, а при отображении их в UITableView вы получите изображение из Интернета. Если вы помещаете изображения только в массив, вы можете сделать это (изображение UIImageView * в myImagesArray) { image.image = [UIImage imageNamed: @ "image.png"]; } – Raz

+0

Извините, не хочу звучать неблагодарно, просто пытаясь окунуться в верстную природу C – DelightedD0D

0

Я думаю, что вы можете сделать с тегом собственности, выбрать все ImageView и дать им ТЭГ, как 777 и

for(id* subview in self.view.subview) { 
    if([subview isKindaOfclass:[UIImageView class]] && (subview.tag == 777)) { 
     UIImageView* imageView = (UIImageView*)subview; 
     imageVIew.image = youImage; 
    } 
} 

надеюсь, что это вам поможет

+0

'' self.view.subview' должен быть 'self.view.subviews' с s? xcode выдает предупреждение и предлагает изменить его, но если я это сделаю, я получаю предупреждение «Тип элемента выбора» __strong id * не является допустимым объектом » – DelightedD0D

+0

Да, self.view.subviews – Retro

Смежные вопросы