如何在 iPhone 应用程序的 UITableCell 中的背景中加载图像

Posted

技术标签:

【中文标题】如何在 iPhone 应用程序的 UITableCell 中的背景中加载图像【英文标题】:how to load image in background in UITableCell in iphone application 【发布时间】:2010-07-09 13:33:31 【问题描述】:

我开发了一个 RSS 应用程序。在我的表格单元格中,我正在显示从 RSS 提要和标题中的 imge 链接检索的图像。 图像已成功加载,但问题是它挂起我的应用程序。 因为有任何方法可以在后台加载图像。 我当前的代码是。

int blogEntryIndex1 = [indexPath indexAtPosition: [indexPath length] -1];
        imgstring=[[blogEntries objectAtIndex: blogEntryIndex1] objectForKey: @"image"];
NSURL *url = [NSURL URLWithString:imgstring];
    NSData *data = [NSData dataWithContentsOfURL:url];
    UIImage *img = [[UIImage alloc] initWithData:data];
     cell.imageView.image=[img autorelease];

请有任何想法,在此先感谢...

【问题讨论】:

Lazy load images in UITableViewCell的可能重复 【参考方案1】:

重新发布...您还应该通过Apple的示例代码http://developer.apple.com/iphone/library/samplecode/LazyTableImages/Introduction/Intro.html查看延迟表加载

更新这里的另一个例子:http://www.markj.net/iphone-asynchronous-table-image/

【讨论】:

【参考方案2】:

好吧,伙计们,我已经做到了,代码是......

- (void) loadImage:(id)object 
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

// Get the data to pass in
NSDictionary *dict = (NSDictionary *)object;

// Get the cell and the image string
NSString *imgstring = [dict objectForKey:@"imgstring"];
MyfirstCell *cell = [dict objectForKey:@"cell"];

NSURL *url = [NSURL URLWithString:imgstring];
NSData *data = [NSData dataWithContentsOfURL:url];
UIImage *img = [[UIImage alloc] initWithData:data];
    cell.myimnage.image = img;
[pool release];

我将在我的代码中调用上述方法...

if(searching) 
        //cell.textLabel.text = [copyListOfItems objectAtIndex:indexPath.row];
        int blogEntryIndex = [indexPath indexAtPosition: [indexPath length] -1];
        // Tell your code to load the image for a cell in the background
        NSString *imgstring =[[blogEntries objectAtIndex: blogEntryIndex] objectForKey: @"image"];
        NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:cell, @"cell", imgstring, @"imgstring", nil];
        [self performSelectorInBackground:@selector(loadImage:) withObject:dict];
        //background code end here..

感谢 deanWombourne 给了我这个代码....

【讨论】:

请在下次发布问题之前进行搜索。对于那些试图提供帮助的人来说,如果我们发布答案而您只是在进行简单搜索后在其他地方获取代码,那将是一种浪费。【参考方案3】:

看看这个同样来自 Apple 的文档。

http://developer.apple.com/iphone/library/documentation/cocoa/Conceptual/URLLoadingSystem/URLLoadingSystem.html

大多数时候我使用NSURLConnection 来下载东西。

【讨论】:

【参考方案4】:

你可以这样使用:

((UIImageView *)cell.backgroundView).image = bgImage;
((UIImageView *)cell.selectedBackgroundView).image = bgImage;

【讨论】:

您还没有回答问题。问题是如何在后台加载图片,而不是设置背景图片。

以上是关于如何在 iPhone 应用程序的 UITableCell 中的背景中加载图像的主要内容,如果未能解决你的问题,请参考以下文章

如何在iphone中录制屏幕[关闭]

如何在 iPhone 应用程序中创建日历?

如何在 iphone 中创建图表应用程序

如何首次在设备上测试 iPhone 应用程序?

如何声明必须在后台运行的 iPhone 应用程序?

如何在兼容 iphone 5 和 iphone 4 的笔尖中应用自动布局?