如何在不使用标签的情况下更改 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")

这也是我的cellForRowAtIndexPathfunction 的样子

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 轴标签

如何在不显示打印对话框的情况下使用 JRPrintServiceExporter 更改边距?

如何在不更改页面的情况下更改内容(非散列 URL)?

如何在不使用自动收缩的情况下使用不同 iPhone 尺寸的自动布局更改字体大小 [重复]