`
niCe
  • 浏览: 40349 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

UITableView 异步加载图片

 
阅读更多
- (UITableViewCell *)tableView:(UITableView *)tableView 
         cellForRowAtIndexPath:(NSIndexPath *)indexPath {

  [NSThread detachNewThreadSelector:@selector(startImageread:) toTarget:self withObject:indexPath];

}
startImageread是获取照片的方法,我是从本地读取的



-(void)startImageread:(NSIndexPath *)indexPath
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    
    NSInteger row = [indexPath row];
    NSDictionary *imageNameDictionary = [self.DataArray objectAtIndex:[DataArray count]-row-1];
    
    NSString *readImageaname=[imageNameDictionary objectForKey:@"objectTimedata"];
    //NSLog(@"SaveData%@",imageNameDictionary);
    //NSLog(readImageaname);
    
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    if (!documentsDirectory) {
        NSLog(@"Documents directory not found!");
    }
    
    
    NSString *Data2File = [documentsDirectory stringByAppendingPathComponent:readImageaname];

    UIImage *newimage=[UIImage imageWithContentsOfFile:Data2File];//读取的图片
    //UIImage *newimage=[[UIImage alloc] initWithContentsOfFile:Data2File];
    //printf("startImageread****indexPath:%d\r\n",row);
    NSDictionary *cellimage = [NSDictionary dictionaryWithObjectsAndKeys:
    
                                   indexPath, @"indexPathdtat", 
                                   newimage,@"image",
                                   nil];
    //[NSThread sleepForTimeInterval:3];//不能让线程睡否则太慢了
    
    [self performSelectorOnMainThread:@selector(_setOCellImage:) withObject:cellimage waitUntilDone:YES];
    [pool release];
}
_setOCellImage是缓存刷新cell的图像
这里需要传递两个参数一个是indexPath 一个是图片newimage但是performSelectorOnMainThread只能带一个参数
这个问题困扰我半天,于是我把indexPath和newimage放到一个数组NSDictionary *cellimage传过来的

-(void)_setOCellImage:( id )celldata
{
    UIImage *newimage=[celldata objectForKey:@"image"];//从参数celldata里面拿出来图片
       [self.DataTable cellForRowAtIndexPath:[celldata objectForKey:@"indexPathdtat"]].imageView.image=newimage;
}

 

分享到:
评论

相关推荐

    uitableVIew异步加载图片

    uitableVIew 异步 加载图片,ios基础开发里面的tableview开发编写。很实用

    iphone UITableView异步加载图片

    iphone UITableView异步加载图片

    uitableview异步加载图片(iOS)

    uitableview异步加载图片(iOS),代码示例

    UITableView异步加载图片(类似于EGOImageView的效果)

    实现UITableView异步加载图片,类似于EGOImageView的效果。 而且自己写的代码比较清晰,容易理解,易于扩展。可以实现指定placehoderImage以及指定imageURL,来进行图片的异步加载。 同时,如果图片已经请求过,则...

    UITableView加载图片 官方范例

    本程序先异步读取rss xml获取数据源,再异步加载图片并保存在内存 滑动时只加载有缓存的图片,滑动结束后才加载网络图片

    TableView异步加载网络xml数据

    UITableView异步加载网络数据的效果,适合初学者,主要学习 1、UITableView通过网络加载数据(这里加载rss的xml格式数据) 2、网络链接及其委托方法的使用 3、获取加载网络数据的总大小以及每次下载数据的大小 4、...

    优化UITableview的Demo

    如何进行TableView流畅度优化的。...1.异步渲染内容到图片。 2.按照滑动速度按需加载内容。 3.重写处理网络图片加载。 实际上做完前两点就可以很流畅了。我把内容都异步渲染到了一张图上,尽可能减少Cell层级。

    举例讲解iOS中延迟加载和上拉刷新/下拉加载的实现

    lazy懒加载(延迟加载)UITableView 举个例子,当我们在用网易新闻App时,看着那么多的新闻,并不是所有... 刚开始我异步加载图片利用SDWebImage来做,最后试验的时候出现了重用bug,因为虽然SDWebImage实现了异步加载缓存,当

    iPhone例子源代码 Code Sample : Lazy Table Images

    这是苹果apple的iphone官方例子,帮助你学习UITableView和显示RSS文本,异步方式加载图片...... 这个例子 分阶段地载入和显示一个UITableView. 一开始载入相关的RSS文本,使表格以最快速度显示出来,然后再异步方式...

    iOS图文混排(模仿新浪微博)

    本Demo采用富文本结合正则表达式实现UITableVIew上的图文混排及布局,提供超链接、@、$等功能,完全模仿新浪微博的功能,在数据请求上使用了AFJSONRequest,也使用了图片的异步加载,性能良好,值得学习。

    微博阅读器

    主要实现微博列表的读取,以UITableView的形式呈现,图片的动态加载,下拉刷新,上拉加载更多微博

    MutiCatagoryView-iOS:分类页面三级菜单,结合UITableView和UICollectionView

    MutiCatagoryView-iOS 商城多级菜单分类页面 附有基于Node.js的提供JSON数据的...异步获取网络数据,缓存加载图片。 运行环境:Xcode 6.4、iOS 8.4 第三方库依赖:AFNetworking、MJExtension、SDWebImage 效果显示图

    Astrolabe:UICollectionViewUITableView数据源管理库

    支持可扩展的,寻呼机和异步加载的源。 安装 斯威夫特3.2 pod 'Astrolabe' , '~> 2.1' 斯威夫特4.0 pod 'Astrolabe' , '~> 3.0' 用法 1.入门 Astrolabe中的每个单元均应配置ViewModel。 例如: struct ...

    LWAsyncDisplayView(iOS源代码)

    LWAsyncDisplayView 轻量级的属性文本 异步绘制 控件,支持布局预加载缓存、支持图文混排显示,支持添加链接、支持自定义排版。使用在UITableView上时,滚动时可以保持帧数在60.详情请见Demo 功能: Features 1、...

    RookieSixt:Sixt iOS应用程序测试

    offer.json文件必须使用OfferManager异步加载。 给定的块方法应返回Offer对象 货币和价格必须以本地化格式显示,使用类别方法 使用ARC,除了iOS附带的框架外,不需要其他框架 将您最好的解决方案发送至进行审查。 ...

    SkeletonView::skull_and_crossbones:一种优雅的方式来向用户显示正在发生的事情,并为他们准备要等待的内容

    今天,几乎所有应用程序都具有异步流程,例如API请求,长时间运行的流程等。在这些流程正常运行时,通常开发人员会放置一个加载视图以向用户显示发生了什么事情。 SkeletonView旨在解决此需求,这是一种向用户展示...

Global site tag (gtag.js) - Google Analytics