如何在 UITableView 中引用 UITableViewCell
Posted
技术标签:
【中文标题】如何在 UITableView 中引用 UITableViewCell【英文标题】:How do I reference a UITableViewCell in a UITableView 【发布时间】:2017-05-24 10:07:15 【问题描述】:表格视图和单元格已创建并填充了标签和滑块。当值更改时,滑块上有一个 IBAction。
如何将该值返回到单元格中的标签中?
我在表格视图中链接了一个 IBOutlet。
@IBAction func slideChange(_ sender: UISlider)
let currentValue = sender.value // gets slider's value
let row = sender.tag // gets slider's row in table
myTableView.cell.myLabel.text = sender.value // Here i need to show updated value
print("Slider in row \(row) has a value of \(currentValue)") // works
【问题讨论】:
您需要重新加载表格视图或特定单元格,然后在 cellforRowAtIndexpath 方法中尝试将该值设置为该单元格。 处理单元格中的滑块并使用委托或闭包,请参阅***.com/questions/28659845/… 【参考方案1】:试试这个:
@IBAction func slideChange(_ sender: UISlider)
let cell: UITableViewCell? = (sender.superview?.superview as? UITableViewCell) // track cell using your view hierarchy and this your cell
cell.myLabel.text = sender.value
或
let rootViewPoint: CGPoint? = sender.superview?.convert(sender.center, to: tblView)
var indexPath: IndexPath? = tblView?.indexPathForRow(at: rootViewPoint!)
let cell: UITableViewCell? = tblView?.cellForRow(at: indexPath!)
【讨论】:
@Sean 你试过这个答案吗? 是的。我对超级视图计数有误。我需要将 UITableViewCell 类型更改为 PersonTableCell (因为我有我的班级)并删除它上面的可选项。我需要强制打开整个单元格。作品 有时答案仅用于建议。您必须对答案进行一些更改才能获得所需的输出。 那为什么要投反对票.. 你可以询问备用观看次数。 我没有投反对票。我什至不能用我的声誉得分投票。 :(我投了赞成票!【参考方案2】:获取对表格视图单元格的引用
let cell = tableView.cellForRow(at: IndexPath(row: sender.tag, section: 0))
更新其标签
cell?.myLabel.text = sender.value
注意:当单元格不可见时,此方法返回 nil。在您的情况下,这不是问题。
【讨论】:
太棒了。当你知道怎么做的时候就这么简单。感谢您的快速响应。 我认为您缺少的是更新数据模型,以便 cellForItem 方法在滚动时使用更新的值配置单元格。以上是关于如何在 UITableView 中引用 UITableViewCell的主要内容,如果未能解决你的问题,请参考以下文章
如何在 UITableViewCell 中添加多行文本字段?
如何从应用程序委托访问 uitabbarcontroller 内的 uinavigationcontroller 内的 uitableview?