Ios cell.imageView图像赢得';t使用UIImageView类别加载

Ios cell.imageView图像赢得';t使用UIImageView类别加载,ios,objective-c,uitableview,uiimageview,Ios,Objective C,Uitableview,Uiimageview,我有一个UIImageView类别,其中包含以下方法。问题是,只有在我通过UITableView滚动表格并重新加载单元格后,图像才被加载。另外,当我打印self.superview时,我得到了零,可能是因为UIImageView不仅仅是作为子视图添加到单元格中 - (void)imageAsynchronousRequestWithURL:(NSURL*)imageURL completion:(CompletionBlock)complete { NSMutableURLRequest

我有一个
UIImageView
类别,其中包含以下方法。问题是,只有在我通过
UITableView
滚动表格并重新加载单元格后,图像才被加载。另外,当我打印self.superview时,我得到了零,可能是因为
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);
                               }

                           }];
}

如何修复此问题?

如果
self.superview
nil
这是因为您没有将此视图添加为另一个视图的子视图。为此,您必须致电:

[cell addSubview:myImageView];
也就是说,您的代码中有许多多线程错误。如果快速滚动,图像将最终进入错误的单元格。如果用户将单元格从屏幕上滚动下来,您也不会提供取消未完成操作的方法


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

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

,但它不仅仅是UIImageView,它是单元格的默认UIImageView,名为Cell.imageView。