如何在不使用标签的情况下更改 tableviewCell 内的图像按钮
Posted
技术标签:
【中文标题】如何在不使用标签的情况下更改 tableviewCell 内的图像按钮【英文标题】:how to change image button inside a tableviewCell without using tag 【发布时间】:2015-08-13 08:36:02 【问题描述】:我在表格视图单元格中有一个按钮。我希望最初该按钮有一个图像“A”,当用户单击它时,它会变为“B”,当用户再次单击它时,它会变回“A”。
让这两个图像在这个场景中是“A”和“B”
我无法使用tag
,因为我使用它来确定用户使用indexPath.row
点击了哪个按钮
下面是我的按钮功能的当前状态。
@IBAction func setNotification(sender: UIButton!)
cell = tableView.cellForRowAtIndexPath(NSIndexPath(forRow: sender.tag, inSection: 0)) as! CustomTableViewCell
sender.setImage(UIImage(named: "B")!, forState: .Normal)
currentRegion = CLCircularRegion(center: CLLocationCoordinate2D(latitude: latitude ,longitude:longitude), radius: 10, identifier: "xyz")
这也是我的cellForRowAtIndexPath
function 的样子
cell.notifybutton.addTarget(self, action: "setNotification:", forControlEvents: UIControlEvents.TouchUpInside)
cell.notifybutton.setImage(UIImage(named: "A"), forState: UIControlState.Normal)
cell.notifybutton.tag = indexPath.row
【问题讨论】:
那么现在什么不起作用? @JulianM 将图像更改为“B”后,我希望在用户再次点击按钮时将其更改回“A” 【参考方案1】:您无需使用标记即可更改按钮图像,请遵循此代码。
你的 cellForRowAtIndexPath 函数为不同的状态设置两个按钮图像
cell.notifybutton.setImage(UIImage(named: "A"), forState: UIControlState.Normal)
cell.notifybutton.setImage(UIImage(named: "B"), forState: UIControlState.Selected)
cell.notifybutton.selected = false //default A image display
你的按钮点击方法
@IBAction func setNotification(sender: UIButton!)
if (sender.selected)
sender.selected = false
else
sender.selected = true
【讨论】:
【参考方案2】:试试这个:
你应该使用下面的代码
- (void)btnChangeImage
UIButton *btn;
if (btn.selected)
[btn setImage:[UIImage imageNamed:@"selected.png"] forState:UIControlStateSelected];
else
[btn setImage:[UIImage imageNamed:@"diselected.png"] forState:UIControlStateNormal];
【讨论】:
【参考方案3】:cell.notifybutton.setImage(UIImage(named: "A"), forState: UIControlState.Normal) cell.notifybutton.setImage(UIImage(named: "B"), forState: UIControlState.Selected) cell.notifybutton.selected = false //默认显示图片
【讨论】:
以上是关于如何在不使用标签的情况下更改 tableviewCell 内的图像按钮的主要内容,如果未能解决你的问题,请参考以下文章
具有自动布局的多行UILabel,如何在不更改标签框架的情况下根据内容调整字体大小?
如何在不更改括号输出的情况下将 2.5 设为下标? ggplot 轴标签