从自定义单元格重新加载表格视图数据

Posted

技术标签:

【中文标题】从自定义单元格重新加载表格视图数据【英文标题】:Reloading tableview data from custom cell 【发布时间】:2015-08-31 18:20:16 【问题描述】:

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

我也有这个自定义单元格的 .swift 文件。

在这个文件中,我有一个没有发送者的函数:输入参数时的任何对象。

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

【问题讨论】:

您是真的在寻找一个单元格来重新加载整个表格,还是只是想重绘该单元格? 【参考方案1】:

尝试创建一个委托。 (我假设你知道,如果不看一下关于委托和协议的苹果文档)

所以我建议的想法是创建一个将在您的 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

理论上它应该可以工作。如果我遗漏了什么,请告诉我

【讨论】:

我该怎么做“最后让你的 UITableview 类符合 CustomCellUpdater 协议”? :) class YourUITableViewController: UITableViewController, CustomCellUpdater ... ..... 很遗憾,但什么也没发生 你说得对,我们忘了一件事。您在课堂上的什么地方使用 customCell? 以 cellForRowAtIndexPath 为例【参考方案2】:

您可以使用委托和协议来执行此操作。

    转到单元类及以上添加此协议:

    protocol updateCustomCell: class  
        func updateTableView() 
    
    

    在你的单元格类中添加这个变量:

    weak var delegate: updateCustomCell?
    

    转到您要更新的类或在那里访问一个变量并在那里添加这个函数:

    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
        */
    
    
    

不要忘记在类内部实现协议(非常重要)。

【讨论】:

以上是关于从自定义单元格重新加载表格视图数据的主要内容,如果未能解决你的问题,请参考以下文章

将数据从自定义表格视图单元格传递到 UIView 控制器

从自定义表格视图单元格获取数据到另一个 VC?

从自定义 tableView 单元格文本字段中获取数据

从自定义单元格加载时如何调整单元格表的高度?

无法从自定义表格视图单元格按钮中删除行

使用 Swift 在表格视图中重新加载单元格数据