如何调用另一个类中的函数? [复制]

Posted

技术标签:

【中文标题】如何调用另一个类中的函数? [复制]【英文标题】: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和对应的数组?

【问题讨论】:

【参考方案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()

【讨论】:

以上是关于如何调用另一个类中的函数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中调用父类中的函数? [复制]

如何从另一个类中的一个类调用 setter 函数?

如何从另一个类调用指向成员的函数? [复制]

如何从同一个类中的另一个构造函数调用抽象类的构造函数(方法重载)[重复]

如何从Angular 6中的另一个类调用类中的函数?

java中一个类怎么调用另一个类中的函数