我正在向UITableView
动态添加自定义单元格,我希望每个单元格都有一个按钮,可以从数据结构中删除该单元格并重新加载视图。
didSelectRowAt indexPath
可以通过使用indexPath.section
和indexPath.row
从我的数据结构中删除元素,然后重新加载表,但是我如何通过触摸其中的一个按钮来执行此操作细胞?
建议将逻辑移至按钮的touchUpInside,但是我该怎么做?以及如何接收按下按钮的单元格的部分和行,以知道要从数据结构中删除哪个元素?
答案 0 :(得分:0)
您可以将indexPath变量存储在自定义单元对象中,并在控制器上调用函数。您需要在cellForRow(at:)
函数中设置indexPath并委托。
protocol CellButtonProtocol: class {
func cellButtonClicked(indexPath: IndexPath?)
}
class CustomCell: UITableViewCell {
weak var delegate: CellButtonProtocol?
var indexPath: IndexPath?
func buttonClick() {
delegate?.cellButtonClicked(indexPath: indexPath)
}
}
答案 1 :(得分:0)
首先,您需要在UITableViewCell内放置一个按钮,然后在@IBAction方法中使用以下代码进行操作
if let cell = (sender as AnyObject).superview??.superview?.superview?.superview as? ChartsCell {
guard let indexPath = grafikTableView.indexPath(for: cell) else { return }
grafikTableView.beginUpdates()
grafikTableView.deleteRows(at: [indexPath], with: .automatic)
grafikTableView.endUpdates()
}
您应该计算哪个超级视图是您内部的按钮。