更改单元格内的UIButton图像
问题描述:
我很难更改包含在表格视图单元格中的我的UIButton
的图像。我的代码如下:按下按钮更改单元格内的UIButton图像
// In tableview for cell at rowIndex method
self.iconBtn = [[UIButton alloc]initWithFrame:CGRectMake(670,10,80, 80)];
self.iconBtn.tag = kIconValueTag;
[cell.contentView addSubview:self.iconBtn];
//Add icon to cell
UIImage *btnImage = [UIImage imageNamed:@"blank_star.png"];
[self.iconBtn setImage:btnImage forState:UIControlStateNormal];
// I am calling method changeIconState after user clicks on icon.
[self.iconBtn addTarget:self action:@selector(changeIconState) forControlEvents:UIControlEventTouchUpInside];
后,表视图的方法之外的方法被称为:
-(void)changeIconState
{
if (self.iconSelectState == kIconNotSelected)
{
self.iconSelectState = kIconSelected;
}
else
{
self.iconSelectState = kIconNotSelected;
}
[self changeIcon];
}
-(void)changeIcon
{
if (self.iconSelectState == kIconSelected)
{
UIImage *btnImageHighlighted = [UIImage imageNamed:@"star.png"];
[self.iconBtn setImage:btnImageHighlighted forState:UIControlStateNormal];
}
else
{
UIImage *btnImageNormal = [UIImage imageNamed:@"blank_star.png"];
[self.iconBtn setImage:btnImageNormal forState:UIControlStateNormal];
}
}
我运行该程序后,图标没有从空白变成明星如我所愿。它只是一个空白的明星。我在这里错过了什么吗?
答
你为什么要自己管理图像/按钮状态?为什么不将两个图像加载到已定义的状态并让操作系统处理它?
//Add icon to cell
UIImage *btnImage = [UIImage imageNamed:@"blank_star.png"];
UIImage *btnImageHighlighted = [UIImage imageNamed:@"star.png"];
[self.iconBtn setImage:btnImage forState:UIControlStateNormal];
[self.iconBtn setImage:btnImageHighlighted forState:(UIControlStateHighlighted && UIControlStateSelected)];
如果你需要管理你的财产(iconSelectedState),你可以不用担心形象。或者,您可以查询按钮状态属性以确定它处于哪个状态。
可能是一个逻辑问题 - 如果不测试代码,可以在不同情况下设置一些NSLog或断点,并查看它在哪里结束。 – Luke 2011-06-05 11:15:24
而这个按钮只在一个单元格中? – 2011-06-05 11:21:13
iconSelectState的初始值是什么? – Tatvamasi 2011-06-05 11:21:16