在UITableView中利用SDWebImage,图片只出来一部分,滚动刷新后才能显示
在UITableView中利用SDWebImage来缓存图片,但是第一次运行时图片只出来一部分(随机的出现1张或者2张),点击每一行或者把表格滚动出屏幕再滚动回来,图片就出现了。
不知道是什么原因?求解答,谢谢。主要代码如下:
-(void)viewDidLoad{
[super viewDidLoad];
//加载数据
[self setUpStatusData];
}
-(void)setUpStatusData{
AFHTTPRequestOperationManager *mgr=[AFHTTPRequestOperationManager manager];
NSMutableDictionary *params=[NSMutableDictionary dictionary];
NSString *filePath=[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:@"account.data"];
WPAccount *account=[NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
params[@"access_token"]=account.access_token;
[mgr GET:@"https://api.weibo.com/2/statuses/home_timeline.json" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSArray *dictArray=responseObject[@"statuses"];
self.statuses=[WPStatus objectArrayWithKeyValuesArray:dictArray];
//刷新表格
[self.tableView reloadData];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
}];
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *ID=@"cell";
UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:ID];
if (cell==nil) {
cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ID];
}
WPStatus *status=self.statuses[indexPath.row];
cell.textLabel.text=status.text;
WPUser *user=status.user;
cell.detailTextLabel.text=user.name;
//加载图片,用框架,有缓存
[cell.imageView sd_setImageWithURL:[NSURL URLWithString:user.profile_image_url] placeholderImage:[UIImage imageWithName:@"icon"]];
return cell;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我没用过AFN,我猜测问题可能出现在你
reloadData
的时候没有在主线程进行,试试把reloadData
外面包个:你这个代码还有个问题,就是
block
中访问self
会造成内存循环引用,正确的做法是:然后在
block
中,使用weakSelf
我也遇到了这样的问题..我是自定也cell..下边这个方法没有解决..楼主还有发现更好的方法吗?
dispatch_async(dispatch_get_main_queue(), ^{
[weakSelf reloadData];
});