无法在UITableViewCell中更改UIButton图像

时间:2018-05-18 07:04:28

标签: ios objective-c uitableview uibutton

我在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

非常感谢任何帮助。

2 个答案:

答案 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];
相关问题