Как перезагрузить данные в UITableView при появлении контроллера представления - PullRequest
0 голосов
/ 28 июня 2019

Если у меня есть два ViewControllers, один из которых содержит UITableView, а другой, который обновляет данные в tableView. Как мне перезагружать данные таблицы, когда я вытолкну из viewController и вернусь к представлению с tableView?

Я уже пробовал использовать viewDidAppear

Ответы [ 2 ]

1 голос
/ 28 июня 2019

Вы можете использовать viewWillAppear точно так же, как предложил Раджеш:

override func viewWillAppear(_ animated: Bool) {
    tableView.reloadData()
}

Или вы можете использовать функцию обратного вызова для передачи данных и перезагрузки представления таблицы контроллера 1.

В ViewController 2 определите вашфункция обратного вызова:

// Callback function
var callbackResult: ((data) -> ())?

И вызовите ее перед возвратом к ViewController 1:

    callbackResult?(data)
    self.navigationController?.popViewController(animated: true)

В ViewController 1 используйте закрытие функции обратного вызова, чтобы собрать результат и перезагрузить tableView.Это может произойти внутри prepareForSegue, например:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "goToViewController2" {
        let destinationVC = segue.destination as! ViewController2
        // Set any variable in ViewController2
        destinationVC.callbackResult = { result in
        // assign passing data etc..
        self.tableView.reloadData()
        }
    }
 }
0 голосов
/ 28 июня 2019

Вы можете попробовать сделать что-то вроде этого:

class TableViewController: UITableViewController {

    func showUpdatingViewController() {
        let vc = UpdatingViewController()

        vc.onUpdate = { [weak self] in
            self?.tableView.reloadData()
        }

        navigationController?.pushViewController(vc, animated: true)
    }

}

class UpdatingViewController: UIViewController {

    var onUpdate: (() -> Void)?

    func updatesFinished() {
        onUpdate?()
        dismiss(animated: true, completion: nil)
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...