我使用parse异步获取图像,然后将它们插入到包含其他内容的数组中。
我返回这个数组来填充一个tableView,并且这些行有一个UIImageView
,但是当我用cellForRowAtIndexPath
中的数组填充表时,我得到的一些异步doest图像被加载了,所以当我首先查看tableView,我得到单元格中带有空图像的行,直到我在tableView中移动滚动,以便再次调用cellForRowAtIndexPath
并且已经加载了在数组中设置的那些图像。
如果我使用[self.tableView reloadData];
进行IBAction,我也可以获得图像。我得到了图像。
问题是我会中等地返回单元格并且未加载图像。 我正在使用自定义TableViewCell。 我发现了"AsyncImageView"加载图像的内容,但我不知道如何。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
//Get the game for the row
GameModel *game = [self.currentMatches objectAtIndex:indexPath.row]; //HERE i load the images
MatchCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"GameCell" forIndexPath:indexPath];
cell.userImage.image = game.avatarp1; //I set the image to the cell but isnt loaded yet
//If i do this WORKS but i get 2 times the same image (on the game and now) (its a function that i created, that seems is calling tableView or so when assigns the image to the cell, i dont understand why it works
[ParseModel getAvatarWithUser:game.p1 completionBlock:^(UIImage *avatar) {
cell.userImage.image = avatar;
}];
答案 0 :(得分:0)
如果在获得dequeueReusableCell时将图像设置为nil
,然后让块设置图像,该怎么办?
只需改变一下:
cell.userImage.image = game.avatarp1;
为此:
cell.userImage.image = nil;
然后让这段代码有效(我已经通过你的回答理解这很有效)
[ParseModel getAvatarWithUser:game.p1 completionBlock:^(UIImage *avatar) {
cell.userImage.image = avatar;
}];
希望它有所帮助!
答案 1 :(得分:0)
您可以使用“SDWebImage”替代您在问题中提到的“AsyncImageView”。它很容易实现。我在这里放了一个我自己的代码示例,我在这里以与您尝试相同的方式从单元格中的URL下载图像。 (更改我的cell.userImage的“视图”)
此方法放置临时图像(占位符,当图像完全下载时,它会自动更改(无需重新加载或滚动)。
- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view
{
if (view == nil)
{
view = [[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 238.0f, 289.0f)] autorelease];
//here is where you put a placeholder and download in the background the image with an URL. Items is an array of URLs
[(UIImageView *)view setImageWithURL:[items objectAtIndex:index]
placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
view.contentMode = UIViewContentModeScaleAspectFit;
}
return view;
}
当您将SDWebImage添加到项目中时,不要忘记添加到.m中:#import< SDWebImage / UIImageView + WebCache.h>