iphone показывает изображения в tableView - PullRequest
0 голосов
/ 12 января 2012

Привет, у меня есть этот код для загрузки изображений с сервера, а затем для их отображения в виде таблицы с некоторым текстом (если изображение отсутствует, я все равно хочу показать текст):

// загрузить часть

NSMutableString *photourl=[[NSMutableString alloc] initWithString:url_image];
    [photourl appendString:[dic objectForKey:@"photo"]];

    @try{

      //add to mutable array
    [photoSmallImageData addObject:[NSData dataWithContentsOfURL:[NSURL URLWithString:photourl]]];
    }
    @catch (id Exception) {
        [photoSmallImageData addObject:[NSData dataWithContentsOfURL:[NSURL URLWithString:url_image]]];

    }

// часть кода табличного представления

NSData *imageData = [photoSmallImageData objectAtIndex:indexPath.row];

    @try {

        cell.imageView.image = [UIImage imageWithData:imageData];
    }
    @catch (NSException *exception) {
      cell.imageView.image = [UIImage imageNamed:@"icon72.png"];
    }
  1. Это работает, но иногда нет изображения, поэтому я хотел бы заменить его на значок, ноТак как мы не можем добавить nil в массив, я просто добавляю туда некоторую часть моей ссылки, даже если ссылка не работает для данных изображения, она не вызывает метод catch.Я не знаю, смогу ли я как-то заменить URL-адрес на локальный, но я не знаю как.Также я не могу пропустить шаг, потому что тогда изображения не будут соответствовать тексту рядом с ним.

2. Все изображения имеют разные размеры, и я хотел бы, чтобы они выглядели стандартно и центрировались. Есть ли способ сделать это и в какой точке кода?Большое спасибо

РЕДАКТИРОВАТЬ Я нашел метод: dataWithContentsOfURL: параметры: ошибка: http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSData_Class/Reference/Reference.html но я не знаю, как его использовать

1 Ответ

2 голосов
/ 12 января 2012

Почему вы не создаете изображения при загрузке данных изображения и сохраняете их в массиве?Кроме того, вы правы после метода dataWithContentsOfURL: options: error: .Учитывая, что вы храните имена изображений в словаре dic , код будет выглядеть следующим образом:

NSMutableString *photourl=[[NSMutableString alloc] initWithString:url_image];
[photourl appendString:[dic objectForKey:@"photo"]];

//try to create the image
NSError* err = nil;
UIImage* img = nil;
NSData* tempData = [NSData dataWithContentsOfURL:[NSURL URLWithString:photourl] options:NSDataReadingMappedIfSafe error:&err];
if (!err) {
    // image data loaded, create image
    img = [UIImage imageWithData:tempData];
} else {
    // image data could not be loaded, display error
    NSLog(@"%@", err);
    // put the default image in the array
    img = [UIImage imageNamed:@"icon72.png"];
}
[photoSmallImage addObject:img];

И затем в представлении табличного представления:

cell.imageView.image = [photoSmallImage objectAtIndex:indexPath.row];

Что касается второй части вашего вопроса, вы можете взглянуть на свойство contentMode класса UIView .По умолчанию используется масштаб для заполнения.Управляя этим свойством в cell.imageView, вы можете добиться желаемого эффекта.

...