【问题标题】:How to call a function in another class? [duplicate]如何调用另一个类中的函数? [复制]
【发布时间】:2019-10-10 21:57:41
【问题描述】:

我在 TableView 中遇到问题。这是包含 TableView 的类。

class LogViewController: UIViewController, UITableViewDelegate, UITableViewDataSource  {
…
func loadLogList() – > [String] {
   …
}

该列表包含我的日志文件目录中的所有日志文件。在自定义 TableViewCell 中,我插入了一个删除日志文件的按钮。这是用户定义的tableViewCell:

class LogTableViewCell: UITableViewCell {

…

    @IBAction func deletePressed(_ sender: Any) {
        let fileManager = FileManager.default
        do {
            try fileManager.removeItem(atPath: logURL!.path)
        }
        catch let error as NSError {
            print("Fehler: \(error)")
        }
    }

按下按钮后,相关文件将被删除。现在我想刷新这个列表。但是 Button 在 TableViewCell 类中,刷新列表的功能在 TableView 类中。如何刷新tableview和对应的数组?

【问题讨论】:

    标签: swift


    【解决方案1】:

    您可以为此使用 Notification Observer 模式,但您可以使用此扩展访问单元格的 tableView:

    extension UITableViewCell {
    
        var tableView: UITableView? {
            return (next as? UITableView) ?? (parentViewController as? UITableViewController)?.tableView
        }
    }
    
    extension UIView {
        var parentViewController: UIViewController? {
            var parentResponder: UIResponder? = self
            while parentResponder != nil {
                parentResponder = parentResponder!.next
                if let viewController = parentResponder as? UIViewController {
                    return viewController
                }
            }
            return nil
        }
    }
    

    - 那么现在:

    您可以在单元格内简单地执行tableView?.reloadData()

    【讨论】:

      猜你喜欢
      • 2021-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-09
      • 2020-10-13
      相关资源
      最近更新 更多