【发布时间】:2012-02-21 19:53:03
【问题描述】:
我正在尝试从NSData 加载从服务器拉取的图像,并在自定义UITableViewCell 中显示它们,但它无法正常工作,并且一遍又一遍地重复图像。
在顶部我们有indexPath.row = 0,从那里向上。当单元加载时,它会调用以下代码来加载图像(使用 NSLog 时会为每个图像返回正确的 URL),因此它似乎正在下载正确的图像。
- (void) startLoadingImage
{
NSString *url = @"myurlhere";
url = [url stringByAppendingFormat:identifier];
NSLog(@"Image URL: %@", url); //THIS IS WHERE I DETERMINE THAT IT IS DOWNLOADING THE CORRECT IMAGE
NSURLRequest * request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:url]];
NSURLConnection * imageConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[imageConnection start];
}
当服务器返回NSData 时,单元格使用委托方法...
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
if (!rawData) rawData=[[NSMutableData alloc]initWithLength:0];
[rawData appendData:data];
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSLog(@"Image did finish loading. Displaying...");
[productImage setImage:[[UIImage alloc]initWithData:rawData]];
}
它可以正常加载四个图像,然后开始重复图像(尽管单元格中的名称和价格等信息确实显示正确)。这意味着您会一遍又一遍地看到牛仔裤的照片,每四个单元格。
这是我的NSLog 输出。再一次,看起来一切都是正确的。
2012-02-21 14:45:01.152 APPNAME[7873:11f03] Image URL: http://www.MYAPPURL.net/production/img/c_00084@2x.jpg
2012-02-21 14:45:01.173 APPNAME[7873:11f03] Image URL: http://www.MYAPPURL.net/production/img/c_00085@2x.jpg
2012-02-21 14:45:01.199 APPNAME[7873:11f03] Image did finish loading. Displaying...
2012-02-21 14:45:01.205 APPNAME[7873:11f03] Image did finish loading. Displaying...
2012-02-21 14:45:11.064 APPNAME[7873:11f03] Image URL: http://www.MYAPPURL.net/production/img/c_00086@2x.jpg
2012-02-21 14:45:11.476 APPNAME[7873:11f03] Image did finish loading. Displaying...
2012-02-21 14:45:12.432 APPNAME[7873:11f03] Image URL: http://www.MYAPPURL.net/production/img/c_00089@2x.jpg
2012-02-21 14:45:12.751 APPNAME[7873:11f03] Image URL: http://www.MYAPPURL.net/production/img/c_00080@2x.jpg
2012-02-21 14:45:13.010 APPNAME[7873:11f03] Image did finish loading. Displaying...
2012-02-21 14:45:13.013 APPNAME[7873:11f03] Image did finish loading. Displaying...
2012-02-21 14:45:14.574 APPNAME[7873:11f03] Image URL: http://www.MYAPPURL.net/production/img/c_00081@2x.jpg
2012-02-21 14:45:14.948 APPNAME[7873:11f03] Image did finish loading. Displaying...
如你所见,它正在加载图像 84、85、86、89、80、81,但它只显示图像 84、85、86、89,然后重复它们。
有谁知道为什么会发生这种情况以及为什么?
【问题讨论】:
-
对我来说这似乎是一个单元重用问题。
标签: iphone objective-c ios uitableview uiimageview