如何从自定义单元格重新加载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()
}
}
答案 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()。