我以编程方式创建了一个表格视图,每个表格视图单元都有与之关联的按钮。
如果单击该行,我可以算出与该行上的按钮关联的标签,然后在应用其他功能时可以编辑标题。
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
TmpActionConnectorTag = indexPath.row + 700 //Tag associated to button
}
单击按钮时,我有这段代码可以更改该行上的另一个按钮
let tag = TmpActionConnectorTag
let tmpButton = self.view.viewWithTag(tag) as? UIButton
问题是,如果我直接单击表格视图单元格中的按钮,则选择行未获得调用,并且未给出标签值。为此,我必须先在单元格中单击,然后单击按钮才能知道与该行关联的标签。
单击按钮时是否有办法锻炼索引行,所以我不必单击实际的单元格?
上面是单元格的正常外观,下面显示了如何选择该单元格才能获得索引值。
答案 0 :(得分:1)
按钮操作不会调用didSelectRowAt
。您应该使用委托方法。如果不知道委托的意思是refer this
答案 1 :(得分:0)
单元格的按钮不会触发func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
,相反,您需要向按钮中添加target
,这通常是在cellForItemAt
内完成的。
将目标添加到单元格中的按钮
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = MyTableViewCell()
cell.button.tag = indexPath.row
cell.button.addTarget(self, action: #selector(didTapCellButton(sender:)), for: .touchUpInside)
}
处理按钮操作
@objc func didTapCellButton(sender: UIButton) {
guard viewModels.indices.contains(sender.tag) else { return } // check element exist in tableview datasource
//Configure selected button or update model
}