2014-02-15 2 views
0

У меня есть таблица, которая анализирует XML и получает значения для изображений, загружаемых ссылками URL. Существует мой код:Не могу получить ссылку на изображение с помощью SDWebImage framework

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

static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 


    UILabel *labelText = (UILabel *)[cell viewWithTag:1000]; 
    labelText.text = [[self.listOfPlaceDetails objectAtIndex:indexPath.row] objectForKey:@"name"]; 

    if (cell == nil){ 
     cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
    } 

[cell.imageView setImageWithURL:[NSURL URLWithString:[[self.listOfPlaceDetails objectAtIndex:indexPath.row]objectForKey:@"imageFirst"]] placeholderImage:[UIImage imageNamed:@"dashie.png" ]completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType){ 


    }]; 

    cell.imageView.contentMode = UIViewContentModeScaleAspectFit; 

return cell; 
} 

Да, это работает, но теперь мне нужно изменить мой UIImage (с категории, что делает его правильный размер), и я просто не могу получить ссылку на него. Когда я попытался изменить изображение в блоке завершения, как это:

[cell.imageView setImageWithURL:[NSURL URLWithString:[[self.listOfPlaceDetails objectAtIndex:indexPath.row]objectForKey:@"imageFirst"]] placeholderImage:[UIImage imageNamed:@"dashie.png" ]completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType){ 

     [image resizedImageWithBounds:CGSizeMake(66, 66)]; 

    }]; 

Там нет абсолютно никакого эффекта, даже когда я изменить изображение на ноль, его на самом деле ничего не делал, поэтому мой вопрос: как получить экземпляр переменной UIImage в методе:

[cell.imageView setImageWithURL:[NSURL URLWithString:[[self.listOfPlaceDetails objectAtIndex:indexPath.row]objectForKey:@"imageFirst"]] placeholderImage:[UIImage imageNamed:@"dashie.png" ]completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType){ 


    }]; 

и изменить его? Или как я могу передать переменную экземпляра UIImage для этого метода, который я создал раньше? Этот вопрос может показаться глупым, но мне нужен совет.

Любая помощь будет оценена, спасибо!

+0

ошибка журнала, если вы получаете какой-либо. – Pawan

+0

Что делать, если вы пытаетесь использовать 'cell.imageView' вместо' image', внутри блока 'setImageWithURL' – Merlevede

+0

У меня нет ошибок, я просто получил недопустимое изображение на ячейках (неправильный размер). Мерлеведе, я не понимаю, что ты имеешь в виду, извини. –

ответ

2

Предполагая, что нет ошибки возвращается к блоку завершения, [image resizedImageWithBounds:CGSizeMake(66, 66)]; создаст новый образ для вас, но вам все еще нужно сделать что-то с ним:

UIImage *resizedImage = [image resizedImageWithBounds:CGSizeMake(66, 66)]; 
cell.imageView.image = image; 

Вы должны быть осторожными, хотя, клетка может быть повторно использован до того, как изображение будет готово, поэтому использование cell в блоке может быть неправильным. Лучше:

UIImage *resizedImage = [image resizedImageWithBounds:CGSizeMake(66, 66)]; 
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
cell.imageView.image = resizedImage; 
+0

Почему вы создаете resizedImage, когда используете изображение в cell.imageView.image? –

+0

@EvgeniyKleban, хорошее место, это была опечатка, исправлено сейчас – Wain

+0

Не имеет значения, теперь это работает, большое спасибо Wain! –

0

SDWebImage есть загрузчик изображений, вы можете скачать файл, изменить все, что вам нужно, и установить в ImageView

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