点击单元格内的按钮时如何显示更改?
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 进行硬编码,那么无论您按什么按钮,它都会更新一个特定的行,只是为了看看它是如何工作的,会发生什么?以上是关于点击单元格内的按钮时如何显示更改?的主要内容,如果未能解决你的问题,请参考以下文章
单击表格单元格内的按钮时无法更新状态,React Ant Design