перезагрузить tableView из другого ViewController Swift 4.2 - PullRequest
0 голосов
/ 20 декабря 2018

когда я пытаюсь вызвать метод из другого VC reloadData(), происходит сбой приложения Fatal error: Unexpectedly found nil while unwrapping an Optional value из-за отсутствия разрешения tablview.

FavoritesFiltersViewController.shareInstance.reloadData()

enter image description here

Ответы [ 3 ]

0 голосов
/ 21 декабря 2018
  • Вы можете использовать Центр уведомлений для перезагрузки tableView данных из
    другого viewController, как показано ниже:

1.Вы можете добавить эту строку в другой viewController.

 NotificationCenter.default.post(name: NSNotification.Name(rawValue: "newDataNotif"), object: nil)

2.Добавьте эту строку (viewDidLoad) в viewController, где содержится tableView.

NotificationCenter.default.addObserver(self, selector: #selector(self.refresh), name: NSNotification.Name(rawValue: "newDataNotif"), object: nil)

3.Добавьте этот метод выбора для перезагрузки данных tableView.

 @objc func refresh() {

    self.tblview.reloadData() // a refresh the tableView.

}

Это работает нормально.Спасибо.

0 голосов
/ 31 декабря 2018

Спасибо за каждого. Наконец, после НИОКР.Я нашел следующее решение.и работает нормально.

let fav:FavoritesFiltersViewController! 
 fav.reloadData()
0 голосов
/ 20 декабря 2018

Проверьте функцию инициализации, которая срабатывает при вызове FavoritesFiltersViewController.shareInstance Кажется, вы не передаете значение свойству tableView.

Просто чтобы проверить, вы можете удалить необязательный из него и посмотреть, если компилятор жалуется, потому что у него нет начального значения.

...