我的VC中UIButton
的单元格上有UITableView
,如此
arrowBtnUp = [UIButton buttonWithType:UIButtonTypeCustom];
arrowBtnUp.frame = CGRectMake(50,(65-19)/2,31, 31);
[arrowBtnUp setBackgroundImage:[UIImage imageNamed:@"arrow_up.png"] forState:UIControlStateNormal];
[arrowBtnUp addTarget:self action:@selector(slideAction) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:arrowBtnUp];
这是我的slideAction
-(void) slideAction
{
[arrowBtnUp setBackgroundImage:[UIImage imageNamed:@"arrow_down.png"] forState:UIControlStateNormal];
// also tried with UIControlStateSelected/Highlighted
}
但它没有用。我找到this链接但没有帮助。 任何建议或样品将不胜感激。
答案 0 :(得分:4)
您的代码应该可以正常工作。不要像这样更改您的代码并尝试
-(void) slideAction:(id)sender
{
[sender setBackgroundImage:[UIImage imageNamed:@"arrow_down.png"] forState:UIControlStateNormal];
}
和
[arrowBtnUp addTarget:self action:@selector(slideAction:) forControlEvents:UIControlEventTouchUpInside];
并确保您的应用包中有arrow_down.png
答案 1 :(得分:3)
问题是您正在重用UIButton的arrowBtnUp
实例。
因此,在slideAction
方法中,您将无法获得按下的按钮参考。
要获取slideAction
方法中的引用,您需要将其作为参数传递。
所以改变代码如:
[arrowBtnUp addTarget:self action:@selector(slideAction:) forControlEvents:UIControlEventTouchUpInside];
-(void) slideAction:(UIButton *)myButton
{
[myButton setBackgroundImage:[UIImage imageNamed:@"arrow_down.png"] forState:UIControlStateNormal];
}
答案 2 :(得分:1)
如果您尝试在触摸后更改按钮图像,则应使用UIButton的控件状态。您可以为每个“状态”指定背景图像,让UIButton确定要显示的内容。
答案 3 :(得分:0)
背景图片与按钮上的图标不同。试试这个:
[_buttonConfirm setImage:[UIImage imageNamed:@"s.png"] forState:UIControlStateNormal];
答案 4 :(得分:0)
如果您尝试在触摸后更改按钮图像,则应使用UIButton的控件状态。您可以为每个“状态”指定背景图像,让UIButton确定要显示的内容。
[myButton setBackgroundImage:[UIImage imageNamed:@"arrow_up.png"] forState:UIControlStateNormal];
[myButton setBackgroundImage:[UIImage imageNamed:@"arrow_down.png"] forState:UIControlStateSelected];
无需在slideAction:target方法中手动切换背景图像。