无法更改 UITableViewCell 内的 UIButton 图像

Posted

技术标签:

【中文标题】无法更改 UITableViewCell 内的 UIButton 图像【英文标题】:Unable to change UIButton image inside UITableViewCell 【发布时间】:2018-05-18 07:04:27 【问题描述】:

我在 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 上提到过类似的帖子,但似乎都没有解决方案。参考链接:OneTwoThree

非常感谢任何帮助。

【问题讨论】:

您正在将按钮图像更改为突出显示状态,我认为您应该将图像设置为正常状态,例如 [_yesNoCell.btnYes setImage:[UIImage imageNamed:@"action_selected"] forState: UIControlStateNormal]; @AbdulRehmanWarraich :这就是我想要的,我想在按下按钮时(尚未释放)显示不同的图像。 我测试了上面的代码,它对我有用 请确认您的图片不为空 然后按住按钮几秒钟 【参考方案1】:

实际上,您将按钮图像设置为突出显示状态,但您的按钮处于正常(默认)状态。所以改变你的按钮状态,如下所示。

斯威夫特 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];

【讨论】:

【参考方案2】:

您可以使用UIControlStateSelected | UIControlStateHighlighted 这样做

[_yesNoCell.btnYes setImage:[UIImage imageNamed:@"action_selected"] forState:UIControlStateSelected | UIControlStateHighlighted];

【讨论】:

以上是关于无法更改 UITableViewCell 内的 UIButton 图像的主要内容,如果未能解决你的问题,请参考以下文章

更改 UITableViewCell 内的 UIbutton 颜色

更改 UITableViewCell 内的 UIView 高度

UITableViewCell 内的 UIScrollView - 水平滚动

UITableViewCell 内的 UIStackView 在 AutoLayout 上无法正确调整

自动布局:无法弄清楚如何解决与扩展 UITableViewCell 内的面板相关的警告

无法在 UITableViewCell 内的 UILabel 中显示来自核心数据的 Double