Как перезагрузить указанный c TableViewController табличного представления в одноэлементном классе в Swift - PullRequest
1 голос
/ 31 марта 2020

У меня есть AAATableViewController с tableView.

И у меня есть отдельный файл swift singleton.

В синглтоне у меня есть функция с некоторыми логами c и в этих логах c,

У меня есть

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

, но это показывает ошибку, потому что в одноэлементном классе нет табличного представления.

Как я могу перезагрузить табличное представление AAATableViewController внутри синглтона, используя делегат и протокол?

Я читал некоторые статьи с делегатом, но все они между viewcontrollers и не могли понять.

1 Ответ

1 голос
/ 31 марта 2020

Я делаю некоторые предположения о структуре вашего кода, но я думаю, что вы захотите что-то вроде этого:

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, вам нужно установить Делегат повторной загрузки синглтона в TableViewController. Теперь Singleton знает о TableViewController и может сказать ему, чтобы он перезагрузился.

...