我有一个定制的UITableViewCell。我在UIImageView上有一个UIButton。现在,当我单击UIButton时,我可以切换UIImageView的图像--类似于单选按钮。
问题是,当我切换到状态为“是”时,会调用服务器进行所需的更改。现在,当我重新加载表时,UIImageView不会更改为'YES‘状态。我将UIButton状态设置为“Selected”,这很好。但是UIImageView并没有改变成新的形象。
在最新消息中我得到了这样的信息:

当我真的想要这个的时候

默认状态是:

UIImageView的更新状态和默认状态相同。
在这里,圆形图标是UIImageView,其余的是UIButton
这就是我一直想做的:
在自定义UITableViewCell中
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
self.karmaLogo = [[UIImageView alloc] initWithFrame:CGRectMake(self.karmaButton.frame.size.width - 40, 8, 30, 30)];
[self.karmaLogo setImage:[UIImage imageNamed:@"logo-grey"]];
self.karmaLogo.userInteractionEnabled = NO;
[self.karmaButton addSubview:self.karmaLogo];
}在UITableView代表中:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// Creates the required custom cell
if (karmaCheck == 1) // Received from the server
{
cell.karmaButton.highlighted = YES;
cell.karmaButton.selected = YES;
cell.karmaLogo.image = nil;
[cell.karmaLogo setImage:[UIImage imageNamed:@"logo-black"]];
[cell.karmaLogo setNeedsDisplay];
[cell bringSubviewToFront:cell.karmaLogo];
}
else
{
cell.karmaButton.highlighted = NO;
cell.karmaButton.selected = NO;
cell.karmaLogo.image = nil;
[cell.karmaLogo setImage:[UIImage imageNamed:@"logo-grey"]];
[cell.karmaLogo setNeedsDisplay];
[cell bringSubviewToFront:cell.karmaLogo];
}执行会在需要时同时输入if和else块,但不会更改图像。但是高亮显示和karmaButton (UIButton)的选择效果很好。
发布于 2013-09-06 16:43:55
您要将图像添加为按钮的子视图,因此当您突出显示该按钮时,图像将被高亮显示。我认为,您看到问题的原因是,当您没有显式设置突出显示的图像时,UIImageView中出现了错误。因此,与其切换图像,不如在if-else块之外执行以下操作:
[cell.karmaLogo setImage:[UIImage imageNamed:@"logo-grey"]];
[cell.karmaLogo setHighlightedImage:[UIImage imageNamed:@"logo-black"]];https://stackoverflow.com/questions/18660235
复制相似问题