我知道这已经被广泛讨论过了,我敢肯定,我只是错过了一些东西,但是像我之前的许多其他人一样,我遇到了单元重用问题一个UITableView ... 我有一个按钮,显示一个头像,我第一次异步下载,然后将其缓存以备后用...... 当我在第一次下载图像时在我的tableview中滚动,化身错误地出现在被重用细胞,尽管我设置化身一个默认的头像在开始下载前,所以我在这里希望有人会知道解决的办法......iOS:UITableViewCell重用,改变按钮的图像
在的cellForRowAtIndexPath:
WaitingCell *waitingCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifierWaiting];
if (waitingCell == nil) {
waitingCell = [[WaitingCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifierWaiting];
waitingCell.delegate = self;
}
[waitingCell.userButton setImage:[UIImage imageNamed:DefaultAvatar] forState:UIControlStateNormal];
[waitingCell.usernameLabel setText:username];
[waitingCell.scoreLabel setText:score];
__block UIImage *img;
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{
if([p1.objectId isEqualToString:currentUser.objectId])
{
img = [profileImages getProfileImageForUser:[p2 objectId]];
waitingCell.user = p2;
} else
{
img = [profileImages getProfileImageForUser:[p1 objectId]];
waitingCell.user = p1;
}
dispatch_async(dispatch_get_main_queue(), ^{
[waitingCell.userButton setImage:img forState:UIControlStateNormal];
});
return waitingCell;
“userButton”的图像是在图像被完全缓存之前被重用的部分,但我认为通过将其设置为默认值(DefaultAvatar是一个常量文件名),它将简单地设置默认头像直到对方被下载,它因此不会再使用其他图片..
该按钮在我的自定义的UITableViewCell的所谓WaitingCell这样:
self.userButton = [UIButton buttonWithType:UIButtonTypeCustom];
[self.userButton setImage:[UIImage imageNamed:PlaceholderAvatar] forState:UIControlStateNormal];
self.userButton.frame = CGRectMake(20, 8, 51, 54);
[self.contentView addSubview:self.userButton];
任何想法如何,我可以把它重用图片并直接使用DefaultAvatar直到下载正确的图像?
您是否通过此设置了断点或跟踪?在waitingCell = [tableView dequeueReusableCellWithIdentifier:'''waiting'ell' ever'nil' after'waitingCell = [tableView dequeueReusableCellWithIdentifier:'? –
什么是completeCell?你在哪里以及如何定义它? – rdelmar
rdelmar,啊我的错误,那只是一个C&P错误,因为我后面有另一个单元命名,而且我在那里错误地选择了C&P - 但在我的代码中它正确地命名为waitingCell :)也编辑了上面的代码... Marcus,所有行在第一次遇到时都是零,但我开始意识到问题可能在于我的缓存而不是单元重用,因为在设置临时映像时单元是零。(如果这使得任何感觉到你) – user969043