点击单元格内的按钮时如何显示更改?

Posted

技术标签:

【中文标题】点击单元格内的按钮时如何显示更改?【英文标题】:How to display changes when tapping a button inside a cell? 【发布时间】:2016-03-07 17:15:42 【问题描述】:

我正在使用带有自定义单元格的表格视图。在这个自定义单元格中,我有一个赞按钮。 当我点击这个按钮时,我希望这个按钮被着色。我想知道如何为这个按钮着色,但我需要重新加载数据才能用颜色显示它。但是当我调用“table.reloadData()”时,会自动拉伸一点滚动视图。 有没有一种方法可以在没有 reloadData() 的情况下显示更改或禁用 scrollView 拉伸?

【问题讨论】:

【参考方案1】:

您是否尝试过仅重新加载您单击的行?

tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Top

不过,对于某些事情,您根本不需要重新加载。如果您只想更改单元格的背景颜色,您可以这样做。我现在注意到你在Objective-C 工作,我的例子是Swift - 希望它仍然足够清楚:-)

首先定义一个自定义单元格——我的单元格很简单,只有一个标签和一个按钮,你已经有了类似的东西。我不确定您是否需要更改单元格或按钮的颜色,所以我都做了

import UIKit

class myCell: UITableViewCell

    @IBOutlet weak var labelTitle: UILabel!
    @IBOutlet weak var cmdButton: UIButton!

    @IBAction func cmdButtonClicked(sender: AnyObject)
    
        self.backgroundColor = UIColor.redColor()
        cmdButton.backgroundColor = UIColor.blueColor()

        print("click \(sender.tag)")
    

如果您确实需要跟踪单击了哪个按钮,则需要在 cellForRowAtIndexPath 中设置标签 - 但您甚至可能不需要这个

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell

    var cell:myCell = tableView.dequeueReusableCellWithIdentifier("Cell") as! myCell

    cell.labelTitle.text = data[indexPath.row]
    cell.cmdButton.tag = indexPath.row

    return cell

【讨论】:

多么奇怪。你确定你有正确的indexPath 吗?如果您对单元格内的按钮按下做出反应,您将不会从indexPath 开始 - 您需要以某种方式从按钮获取它 - 通过tag 属性?如果您对 indexPath 进行硬编码,那么无论您按什么按钮,它都会更新一个特定的行,只是为了看看它是如何工作的,会发生什么?

以上是关于点击单元格内的按钮时如何显示更改?的主要内容,如果未能解决你的问题,请参考以下文章

uitableview 单元格突出显示

如何让一个单元格内容显示两行文字呢?

最佳实践:处理来自表格视图单元格内按钮的操作?

单击表格单元格内的按钮时无法更新状态,React Ant Design

以编程方式在 UITableViewCell 上显示删除按钮

快速单击其中一个 tableview 单元格内的按钮后重新加载 tableview