Swift TableView продолжает возвращать ноль

У меня есть два контроллера представления. Я пытаюсь вызвать tableview.reloadData из второго контроллера представления, чтобы перезагрузить мой tableview на моем первом контроллере представления, но я продолжаю получать нулевую ошибку. Я делаю следующее, чтобы вызвать перезагрузку таблицы:

let VC = NotificationViewController()

VC.tableView.reloadData()

И мой tableView определен в моем первом VC следующим образом:

@IBOutlet weak var tableView: UITableView!

person Martheli    schedule 22.08.2017    source источник
comment
Почему вы создаете новый контроллер и сразу же пытаетесь перезагрузить его табличное представление задолго до того, как представите контроллер представления? Почему вы даже напрямую обращаетесь к табличному представлению нового контроллера представления?   -  person rmaddy    schedule 22.08.2017
comment
ReloadData вызывается нажатием кнопки на моем втором VC. Tableview находится на моем первом VC. Я представляю свой второй VC, чтобы пользователь мог фильтровать результаты. Поэтому после того, как они сделают свой выбор во втором VC, я хочу, чтобы он перезагрузил данные в первом VC.   -  person Martheli    schedule 22.08.2017
comment
Тогда вам нужно разместить более релевантный код, а не только две строки. Показать контекст.   -  person rmaddy    schedule 22.08.2017
comment
Вероятный дубликат stackoverflow.com/questions/41948446/ и многие другие   -  person matt    schedule 22.08.2017


Ответы (2)


У меня есть два контроллера представления

Но NotificationViewController() не является ни тем, ни другим. Это третий, бесполезный контроллер представления.

Кроме того, VC2 и VC разные, поэтому ваш код не имеет смысла.

person matt    schedule 22.08.2017
comment
NotificationVIewController — мой первый контроллер представления, так что нет, он не бесполезен. Ваш комментарий очень бесполезен, поскольку он не дает конструктивной обратной связи. - person Martheli; 22.08.2017
comment
Нет, это не ваш первый контроллер представления. Это экземпляр того же класса, что и ваш первый контроллер представления, но это неправильный экземпляр. Это новый, отключенный экземпляр, без интерфейса и без табличного представления - как вы сами показали. Мой комментарий в точку. Слушай, думай и учись. - person matt; 22.08.2017

Сам разобрался. Сначала я создал функцию для перезагрузки таблицы:

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

Затем использовал следующее:

NotificationCenter.default.addObserver(self, selector:#selector(NotificationViewController.reload),  name: NSNotification.Name(rawValue: "reloadTable"), object: nil)

Затем во втором контроллере представления я вызываю его с помощью:

NotificationCenter.default.post(name: NSNotification.Name(rawValue: "reloadTable"),  object: nil)
person Martheli    schedule 22.08.2017