通过触摸该单元格中的按钮来删除UITableViewCell

时间:2018-08-07 06:01:21

标签: swift xcode uitableview

我正在向UITableView动态添加自定义单元格,我希望每个单元格都有一个按钮,可以从数据结构中删除该单元格并重新加载视图。

didSelectRowAt indexPath可以通过使用indexPath.sectionindexPath.row从我的数据结构中删除元素,然后重新加载表,但是我如何通过触摸其中的一个按钮来执行此操作细胞?

建议将逻辑移至按钮的touchUpInside,但是我该怎么做?以及如何接收按下按钮的单元格的部分和行,以知道要从数据结构中删除哪个元素?

2 个答案:

答案 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()
}

您应该计算哪个超级视图是您内部的按钮。