如何从tableView重新加载表?

时间:2018-06-15 08:43:14

标签: ios swift uitableview

如何从自定义单元格重新加载tableView?如果单击按钮表,应该重新加载单元格内部有两个按钮。 我试图在UITableViewCell文件中添加协议,并在单击按钮后重新加载它,但未调用UITableViewController内的协议功能。

这里是UITableViewCell里面的代码:

protocol reloadTableDelegate  {
    func reloadTableonClick()
}

class TableViewCell: UITableViewCell {
   var delegate : reloadTableDelegate?

    @IBOutlet weak var button2: UIButton!
    @IBOutlet weak var button1: UIButton!

     var button1Clicked = false
    var button2clicked = false


    @IBAction func button1Action(_ sender: Any) {
        button2clicked = true
        delegate?.reloadTableonClick()
    }
    @IBAction func button2Action(_ sender: Any) {
        delegate?.reloadTableonClick()
    }

}

这是我在UITableView中重新加载表所做的事情:

extension TableViewController : reloadTableDelegate {
    func reloadTableonClick() {
        tableView.reloadData()
    }

}

2 个答案:

答案 0 :(得分:1)

首先,您需要为按钮添加操作。你可以这样做:

if myButton.target(forAction: #selector(self.myButtonTapped()), withSender: nil) == nil { //Check that we don't add it multiple times
    myButton.addTarget(self, action: #selector(self.myButtonTapped()), for: .touchUpInside)
}

此行必须位于cellForRowAtIndexPath

然后在你的视图控制器中创建一个这样的函数:

func myButtonTapped() {
    self.tableView.reloadData()
}

从您在代码中提供的示例中,您还应该将委托设置为单元格。 cellForRowAtIndexPath中的含义你应该设置:

myCell.delegate = self

在你的视图控制器中实现那些你已经在做的方法。

答案 1 :(得分:0)

尝试在需要更新时随时添加tableView.reloadData()。