Перезагрузить tableView из другого ViewController Swift 4.2

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

FavoritesFiltersViewController.shareInstance.reloadData()

3 ответа

Решение

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

let fav:FavoritesFiltersViewController! 
 fav.reloadData()
  • Вы можете использовать NotificationCenter для перезагрузки таблицы просмотра данных из
    другой 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.

}

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

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

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

Другие вопросы по тегам