2017-02-14 1 views
0

У меня есть UIViewController называется MainVC содержит UITableViewController называется TableVC с помощью контейнера, и я пытаюсь получить родительский контроллер вида из TableVC, используя следующий код внутри себя: let parentVC = self.parent as! MainVC, но Я получаю fatal error: unexpectedly found nil while unwrapping an Optional value. Затем я дважды проверял, нет ли self.parent, как и ожидалось, это так. После этого я использую следующий код внутри MainVC: self.childViewControllers[0] as! TableVC, чтобы убедиться, что TableVC - дочерний вид MainVC, а код работает просто отлично. Итак, мой вопрос: как я могу получить родительское представление контейнера?Получить Родительское представление контейнерного ViewController

+0

Возможно ли, что вы пытаетесь получить родительский View Controller * до того, как * TableVC фактически был добавлен к нему? Где в вашем коде вы вызываете let parentVC = self.parent as! MainVC? – DonMag

+0

@DonMag Это в func ViewDidLoad() – AlexBains

+0

@DonMag Я просто переместил его в func ViewWillAppear(), и он сработал! Большое спасибо! – AlexBains

ответ

1

Я не знаю, в чем причина того, что вам нужна ссылка MainVC, но если вам нужно выполнить некоторую функцию или изменить какое-то значение в MainVC, вы должны использовать делегаты, вы можете найти дополнительную информацию о том, как ее использовать. here

Другой вариант, что вы создаете ссылку в UITableViewController типа MainVC и установить его, когда вы представляете UITableViewController

enter image description here

enter image description here

+0

Причина, по которой мне нужна ссылка MainVC, заключается в том, что у меня есть распознаватель жестов для обнаружения жестов нажатия чтобы убрать клавиатуру при касании вне клавиатуры. и ему понадобятся две цели, одна из них - TableView сама, а другая - MainVC. – AlexBains

0

.superview Доступ к любому подклассу UIView дает вам родительский. Если вы знаете иерархию стека контроллера вашего вида, то .superview должен помочь вам.

+0

ViewControllers не имеют супервизоров –

Смежные вопросы