在UITableView中利用SDWebImage来缓存图片,但是第一次运行时图片只出来一部分(随机的出现1张或者2张),点击每一行或者把表格滚动出屏幕再滚动回来,图片就出现了。不知道是什么原因?求解答,谢谢。主要代码如下:-(void)viewDidLoad{[superviewDidLoad];//加载数据[selfsetUpStatusData];}-(void)setUpStatusData{AFHTTPRequestOperationManager*mgr=[AFHTTPRequestOperationManagermanager];NSMutableDictionary*params=[NSMutableDictionarydictionary];NSString*filePath=[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)lastObject]stringByAppendingPathComponent:@"account.data"];WPAccount*account=[NSKeyedUnarchiverunarchiveObjectWithFile:filePath];params[@"access_token"]=account.access_token;[mgrGET:@"https://api.weibo.com/2/statuses/home_timeline.json"parameters:paramssuccess:^(AFHTTPRequestOperation*operation,idresponseObject){NSArray*dictArray=responseObject[@"statuses"];self.statuses=[WPStatusobjectArrayWithKeyValuesArray:dictArray];//刷新表格[self.tableViewreloadData];}failure:^(AFHTTPRequestOperation*operation,NSError*error){}];}-(UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexPath:(NSIndexPath*)indexPath{staticNSString*ID=@"cell";UITableViewCell*cell=[tableViewdequeueReusableCellWithIdentifier:ID];if(cell==nil){cell=[[UITableViewCellalloc]initWithStyle:UITableViewCellStyleSubtitlereuseIdentifier:ID];}WPStatus*status=self.statuses[indexPath.row];cell.textLabel.text=status.text;WPUser*user=status.user;cell.detailTextLabel.text=user.name;//加载图片,用框架,有缓存[cell.imageViewsd_setImageWithURL:[NSURLURLWithString:user.profile_image_url]placeholderImage:[UIImageimageWithName:@"icon"]];returncell;}
2 回答
回首忆惘然
TA贡献1847条经验 获得超11个赞
我没用过AFN,我猜测问题可能出现在你reloadData的时候没有在主线程进行,试试把reloadData外面包个:dispatch_async(dispatch_get_main_queue(),^{[weakSelfreloadData];});你这个代码还有个问题,就是block中访问self会造成内存循环引用,正确的做法是:__weakUITableViewController*weakSelf=self;然后在block中,使用weakSelf
婷婷同学_
TA贡献1844条经验 获得超8个赞
我也遇到了这样的问题..我是自定也cell..下边这个方法没有解决..楼主还有发现更好的方法吗?dispatch_async(dispatch_get_main_queue(),^{[weakSelfreloadData];});
添加回答
举报
0/150
提交
取消