如何在 swift 中以单例 class 重新加载特定 TableViewController 的表视图

How to reload specific TableViewController's tableview in a singleton class in swift

我有一个带有 tableView 的 AAATableViewController。

我有一个单独的 swift 单例文件。

在单例中,我有一个具有某种逻辑的函数,在这个逻辑中,

我有

   DispatchQueue.main.async {              
      self.tableView.reloadData()
   }

但是显示错误,因为单例中没有tableview class。

如何使用委托和协议在单例中重新加载 AAATableViewController 的表视图?

看了一些关于delegate的文章,但是都在viewcontroller之间,搞不懂。

我正在对您的代码结构做出一些假设,但我认为您会想要这样的东西:

protocol ReloadDelegate: AnyObject {
    func reloadTable()
}

struct Singleton {
    weak var reloadDelegate: ReloadDelegate?
    static var shared = Singleton()

    func doSomething() {
        DispatchQueue.main.async {
            self.reloadDelegate?.reloadTable()
        }
    }
}

class TableViewController: UITableViewController, ReloadDelegate {
    override func viewDidLoad() {
        super.viewDidLoad()
        Singleton.shared.reloadDelegate = self
    }

    func reloadTable() {
        self.tableView.reloadData()
    }
}

创建 TableViewController 时,需要将 Singleton 的重新加载委托设置为 TableViewController。现在 Singleton 知道 TableViewController 并可以告诉它重新加载。