iPhone学习之路 Table实现动态加载图片是本文要介绍的内容,内容不多,基于代码实现,我们一起来看内容。
Iphone在加载列表时,如果每个等待把所有列表中的数据都加载完在显示相关内容,如果列表中有一些比较大的图片,加载的时间比较长,那么给用户的效果就很差了,下面详细是一种实现动态加载图片的办法:
- - (UITableViewCell *)tableView:(UITableView *)tableView
- cellForRowAtIndexPath:(NSIndexPath *)indexPath {
- UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"tag"];
- if (cell==nil) {
- cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
- reuseIdentifier:@"tag"] autorelease];
- }
- //表格设计
- NSDictionary* one = [array objectAtIndex:indexPath.row];
- cell.textLabel.text = [one objectForKey:@"title"];
- cell.detailTextLabel.text = [one objectForKey:@"content"];
- [NSThread detachNewThreadSelector:@selector(updateImageForCellAtIndexPath:) toTarget:self withObject:indexPath];
- return cell;
- }
- - (void)updateImageForCellAtIndexPath:(NSIndexPath *)indexPath
- {
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- UIImage *image = [self getImageForCellAtIndexPath:indexPath];
- UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
- [cell.imageView performSelectorOnMainThread:@selector(setImage:) withObject:image waitUntilDone:NO];
- [image release];
- [pool release];
- }
- -(UIImage *)getImageForCellAtIndexPath:(NSIndexPath *)indexPath
- {
- id path = [[array objectAtIndex:indexPath.row] objectForKey:@"image"];
- NSURL *url = [NSURL URLWithString:path];
- NSData *data = [NSData dataWithContentsOfURL:url];
- UIImage *image = [[UIImage alloc] initWithData:data cache:NO];
- return image;
- }
源代码:http://easymorse-iphone.googlecode.com/svn/trunk/WelcomePavilion/
小结:iPhone学习之路 Table实现动态加载图片的内容介绍完了,希望本文对你有所帮助!
本文来自:http://wangjun.easymorse.com/?p=908