我有一个带自定义单元格的tableView。
我还有一个针对此custrom单元的.swift文件。
在这个文件中,我有一个函数,它没有发送者:AnyObject输入参数。
如何从此函数调用tableView.reloadData()?
答案 0 :(得分:15)
尝试创建委托。 (我假设您知道,如果不查看有关委托和协议的Apple文档)
所以我建议的想法是创建一个将在UITableViewController(或符合UITableViewDelegate协议的UIViewController)中实现的函数。
首先尝试在CustomCell.swift文件的基础上添加协议。
protocol CustomCellUpdater: class { // the name of the protocol you can put any
func updateTableView()
}
然后在CustomCell.swift中:
weak var delegate: CustomCellUpdater?
func yourFunctionWhichDoesNotHaveASender () {
...
delegate?.updateTableView()
}
之后在UITableViewController
(或等效的)
func updateTableView() {
tableView.reloadData() // you do have an outlet of tableView I assume
}
最后,让您的UITableview
课程符合CustomCellUpdater
协议
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "yourIdentifier", for: indexPath) as! YourTableViewCell
cell.delegate = self
}
理论上它应该有效。如果我错过任何内容,请告诉我
答案 1 :(得分:0)
the answer is simple you can use delegate and protocol to do this
first
go to the cell class
and above add this protocol
protocol updateCustomCell: class {
func updateTableView()
}
second
add this variable inside your cell class
weak var delegate: updateCustomCell?
third
go to the class u wanna update or access a variable their
and add this function there
func updateTableView() {
/* write what you want here
simply what this means is you are trying to say if something happed in the custom cell and you want to update something or even want to access something from the current class inside your customCell class use this function not the protocol function */
}
don't forget to implement the protocol inside the class (Very important)