TableViewController使用带有UIImage的SDWebImage

时间:2014-11-11 13:27:27

标签: ios xcode uitableview xcode6 sdwebimage

下午好,

我第一次尝试在我的TableViewController中使用SDWebImage,并且使用“setImageWithURL”属性时遇到了一些问题,因为它只允许UIImageView但我有一个UIImage来解析来自我的JSON的数据。

为了使用UIImageView而不是UIImage,我如何更改代码?因为UIImageView与UIImage没有相同的功能,我必须从URL创建我的图像。

这是我的代码,我希望你能帮助我一些提示:

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

{
    static NSString *CellIdentifier = @"carTableCell";
    CarTableViewCell *cell = [tableView

                              dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[CarTableViewCell alloc]
                initWithStyle:UITableViewCellStyleDefault
                reuseIdentifier:CellIdentifier];
    }
    // Configure the cell...

    cell.makeLabel.text = [[_jsonArray objectAtIndex:indexPath.row] valueForKey:@"id"];
    cell.likes.text = [[_jsonArray objectAtIndex:indexPath.row] valueForKey:@"likes"];
    cell.comments.text = [[_jsonArray objectAtIndex:indexPath.row] valueForKey:@"comments"];
    cell.username.text = [[_jsonArray objectAtIndex:indexPath.row] valueForKey:@"username"];
    cell.refuser.text = [[_jsonArray objectAtIndex:indexPath.row] valueForKey:@"user_ref"];
    cell.modelLabel.text = [[_jsonArray objectAtIndex:indexPath.row] valueForKey:@"user"];

    NSURL * imageURL = [NSURL URLWithString:[[_jsonArray objectAtIndex:indexPath.row] valueForKey:@"imagen"]];
    NSData * imageData = [NSData dataWithContentsOfURL:imageURL];
    UIImage * carPhoto = [UIImage imageWithData:imageData];
    cell.carImage.image = carPhoto;

    /*[cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
               placeholderImage:[UIImage imageNamed:@"placeholder.png"]];*/

    NSURL * imageURL2 = [NSURL URLWithString:[[_jsonArray objectAtIndex:indexPath.row] valueForKey:@"image"]];
    NSData * imageData2 = [NSData dataWithContentsOfURL:imageURL2];
    UIImage * carPhoto2 = [UIImage imageWithData:imageData2];
    cell.profileImage.image = carPhoto2;

    return cell;

}

非常感谢。

2 个答案:

答案 0 :(得分:0)

将您的代码更改为

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

{
static NSString *CellIdentifier = @"carTableCell";
CarTableViewCell *cell = [tableView

                          dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[CarTableViewCell alloc]
            initWithStyle:UITableViewCellStyleDefault
            reuseIdentifier:CellIdentifier];
}
// Configure the cell...

cell.makeLabel.text = [[_jsonArray objectAtIndex:indexPath.row] valueForKey:@"id"];
cell.likes.text = [[_jsonArray objectAtIndex:indexPath.row] valueForKey:@"likes"];
cell.comments.text = [[_jsonArray objectAtIndex:indexPath.row] valueForKey:@"comments"];
cell.username.text = [[_jsonArray objectAtIndex:indexPath.row] valueForKey:@"username"];
cell.refuser.text = [[_jsonArray objectAtIndex:indexPath.row] valueForKey:@"user_ref"];
cell.modelLabel.text = [[_jsonArray objectAtIndex:indexPath.row] valueForKey:@"user"];

NSURL * imageURL = [NSURL URLWithString:[[_jsonArray objectAtIndex:indexPath.row] valueForKey:@"imagen"]];

[cell.imageView setImageWithURL:imageURL
           placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

    NSURL * imageURL2 = [NSURL URLWithString:[[_jsonArray objectAtIndex:indexPath.row] valueForKey:@"image"]];

[cell.profileImage setImageWithURL:imageURL2
           placeholderImage:[UIImage imageNamed:@"placeholder.png"]];



return cell;

}

希望这会有所帮助。

答案 1 :(得分:0)

使用SDWebImage

时,您只需添加两行
[cell.carImage sd_setImageWithURL: [NSURL URLWithString: imageURL]];
[cell.profileImage sd_setImageWithURL: [NSURL URLWithString: imageURL2]];

并删除以下行

NSURL * imageURL = [NSURL URLWithString:[[_jsonArray objectAtIndex:indexPath.row] valueForKey:@"imagen"]];
NSData * imageData = [NSData dataWithContentsOfURL:imageURL];
UIImage * carPhoto = [UIImage imageWithData:imageData];
cell.carImage.image = carPhoto;

/*[cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
           placeholderImage:[UIImage imageNamed:@"placeholder.png"]];*/

NSURL * imageURL2 = [NSURL URLWithString:[[_jsonArray objectAtIndex:indexPath.row] valueForKey:@"image"]];
NSData * imageData2 = [NSData dataWithContentsOfURL:imageURL2];
UIImage * carPhoto2 = [UIImage imageWithData:imageData2];
cell.profileImage.image = carPhoto2;