【发布时间】:2013-07-04 18:55:38
【问题描述】:
我正在使用 SDWebImage 并从新闻 API 中获取与新闻文章相关联的图像。
问题是,在我开始滚动UITableView 之前,屏幕上的单元格的图像不会加载。一旦我滚动过一个单元格,它就会离开屏幕,一旦我回到它,图像最终会被加载。
这是我的 (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 代码:
if ([feedLocal.images count] == 0) {
[cell.imageView setImage:[UIImage imageNamed:@"e.png"]];
}
else {
Images *imageLocal = [feedLocal.images objectAtIndex:0];
NSString *imageURL = [NSString stringWithFormat:@"%@", imageLocal.url];
NSLog(@"img url: %@", imageURL);
// Here we use the new provided setImageWithURL: method to load the web image
__weak UITableViewCell *wcell = cell;
[cell.imageView setImageWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@", imageURL]]
placeholderImage:[UIImage imageNamed:@"115_64.png"]
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {
if(image == nil) {
[wcell.imageView setImage:[UIImage imageNamed:@"115_64.png"]];
//];
}
}
];
}
知道为什么会这样吗?似乎当 UITableView 加载时,图像没有被告知加载或其他什么,直到滚动开始?
非常感谢任何建议,谢谢!
【问题讨论】:
-
这是令人耳目一新的问题。您必须进行 NSNotification 调用,并且在加载每个图像时,您必须调用 tableview 重新加载数据以便它立即显示图像
-
欣赏@AJ112 的评论...你有代码 sn-p 以便我可以看到我的代码中的样子吗?这是有道理的,但我以前从未这样做过,所以我想确保我正确地关注你。
-
在我的情况下,下载过程发生在不同的文件中,这就是我使用 NSNotificationCenter 的原因,但我遇到了完全相同的问题,即向下滚动时图像开始出现。你可以先调用 [self.tableView reloadData];在您下载图像并将其设置为您的图像视图之后。
-
我最初在我的
viewDidLoad中调用[_tableview reloadData]。但是当我出于某种原因尝试在cellForRowAtIndexPath中调用它时,我一定找不到合适的位置,因为我无法让它刷新所有图像。 -
这和这个问题很相似:stackoverflow.com/questions/9352638/… 解决方法是一样的;你的 UIImageView 有一个占位符。
标签: ios objective-c uitableview sdwebimage