从自定义单元重新加载tableview数据

时间:2015-08-31 18:20:17

标签: swift tableview custom-cell reloaddata

我有一个带自定义单元格的tableView。

我还有一个针对此custrom单元的.swift文件。

在这个文件中,我有一个函数,它没有发送者:AnyObject输入参数。

如何从此函数调用tableView.reloadData()?

2 个答案:

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