猿问

在UITableView中利用SDWebImage,图片只出来一部分,滚动刷新后才能显示

在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;
}
凤凰求蛊
浏览 293回答 2
2回答

回首忆惘然

我没用过AFN,我猜测问题可能出现在你reloadData的时候没有在主线程进行,试试把reloadData外面包个:dispatch_async(dispatch_get_main_queue(),^{[weakSelfreloadData];});你这个代码还有个问题,就是block中访问self会造成内存循环引用,正确的做法是:__weakUITableViewController*weakSelf=self;然后在block中,使用weakSelf

婷婷同学_

我也遇到了这样的问题..我是自定也cell..下边这个方法没有解决..楼主还有发现更好的方法吗?dispatch_async(dispatch_get_main_queue(),^{[weakSelfreloadData];});
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答