我在xib中创建了一个自定义UITableViewCell
,并为其分配了一个自己的类文件。我已将背景图像分配给IB中此自定义单元格内的UIButton
。在ViewController
我有UITableView
使用此单元格的地方,我有以下代码。
_yesNoCell = (YesNoCell *)[tableView dequeueReusableCellWithIdentifier:@"YesNoCell"];
// Below code is not working
[_yesNoCell.btnYes setImage:[UIImage imageNamed:@"action_selected"] forState: UIControlStateHighlighted];
[_yesNoCell.btnYes addTarget:self action:@selector(btnYesTap:) forControlEvents:UIControlEventTouchUpInside];
一切正常,btnYesTap
方法按预期调用。在IB中设置的背景图像显示,但是,当按下按钮(未释放),即UIControlStateHighlighted
时,我想要设置不同的图像。上面的代码不起作用。
我甚至尝试在按钮上添加一个动作:
[_yesNoCell.btnYes addTarget:self action:@selector(changeImage:) forControlEvents:UIControlEventTouchDown];
并在changeImage
方法中更改图片,但它无效。
我在SO上提到了类似的帖子,但似乎没有一个解决方案。推荐链接:One Two Three
非常感谢任何帮助。
答案 0 :(得分:0)
实际上,您将按钮图像设置为突出显示状态,但您的按钮处于正常(默认)状态。因此,如下所示更改按钮状态。
Swift 4
let myImg = UIImage(named: "your-img-name") // your image
myButton.setImage(myImg, for: .highlighted) // set button image for state
myButton.isHighlighted = true // change button state
目标-C
UIImage *myImg = [UIImage imageNamed:@"your-img-name"];
[myButton setImage:myImg forState:UIControlStateHighlighted];
[myButton setHighlighted:true];
答案 1 :(得分:0)
你可以使用UIControlStateSelected | UIControlStateHighlighted
[_yesNoCell.btnYes setImage:[UIImage imageNamed:@"action_selected"] forState:UIControlStateSelected | UIControlStateHighlighted];