cell.imageView图像不会加载UIImageView类别

时间:2015-03-24 17:19:49

标签: ios objective-c uitableview uiimageview

我有UIImageView类别,其中包含以下方法。问题是只有在我滚动表格并且UITableView重新加载单元格之后才会加载图像。此外,当我打印self.superview时,我得到nil,可能是因为UIImageView不仅仅作为子视图添加到单元格中。

- (void)imageAsynchronousRequestWithURL:(NSURL*)imageURL completion:(CompletionBlock)complete
{
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:imageURL];
    [NSURLConnection sendAsynchronousRequest:request
                                       queue:[NSOperationQueue mainQueue]
                           completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {

                               UIImage *image = [[UIImage alloc] initWithData:data];
                               self.image = image;

                               NSLog(@"%@", self);
                               NSLog(@"%@", self.superview);
                               NSLog(@"%@", self.superview.superview);

                               [self setNeedsLayout];
                               [self setNeedsDisplay];

                               if (complete) {
                                   complete(image, error);
                               }

                           }];
}

我该如何解决?

2 个答案:

答案 0 :(得分:0)

如果self.superviewnil,那是因为您没有将此视图添加为另一个视图的子视图。要做到这一点,你必须致电:

[cell addSubview:myImageView];

那就是说,你的代码中有许多多线程错误。如果快速滚动,图像将以错误的单元格结束。如果用户将单元格滚出屏幕,您也无法提供取消未完成操作的方法。

您可能只想用SDWebImage替换代码,或者至少将其源代码与您的代码进行比较。

答案 1 :(得分:0)

在加载单元格之前,无法将图像设置为UITableViewCell imageView。唯一的方法是在subview之上创建Cell,然后初始化此UIImageView