У меня есть 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
ответ
Я не знаю, в чем причина того, что вам нужна ссылка MainVC, но если вам нужно выполнить некоторую функцию или изменить какое-то значение в MainVC, вы должны использовать делегаты, вы можете найти дополнительную информацию о том, как ее использовать. here
Другой вариант, что вы создаете ссылку в UITableViewController типа MainVC и установить его, когда вы представляете UITableViewController
Причина, по которой мне нужна ссылка MainVC, заключается в том, что у меня есть распознаватель жестов для обнаружения жестов нажатия чтобы убрать клавиатуру при касании вне клавиатуры. и ему понадобятся две цели, одна из них - TableView сама, а другая - MainVC. – AlexBains
.superview
Доступ к любому подклассу UIView
дает вам родительский. Если вы знаете иерархию стека контроллера вашего вида, то .superview
должен помочь вам.
ViewControllers не имеют супервизоров –
- 1. Представление ViewController
- 2. rejectModalViewController Скрывает родительское представление по строке состояния
- 3. PartialView обновление модели Родительское представление
- 4. Autolayout вид заполнения Родительское представление
- 5. Представление ViewController из appDelegate
- 6. Сделать представление viewController NSVisualEffectsView
- 7. Представление viewController в навигацииController
- 8. UIImagePickerController отклоняет родительское представление при выборе изображения
- 9. сделать UIScrollView заполнить родительское представление с ограничениями
- 10. Представление ViewController Z-Index Issue
- 11. Представление ViewController после сброса NSUSerDefaults
- 12. Swift: Переключение между NSViewController внутри контейнерного View/NSView
- 13. my scrollview в viewcontroller не отображает табличное представление в контейнере
- 14. Получить родительское устройство
- 15. Получить родительское пустое пространство
- 16. Как получить родительское значение
- 17. C++ Создание контейнерного класса
- 18. DI Организация контейнерного кода
- 19. DryIOC Контейнерного Содержания
- 20. Как загрузить представление viewController в другой вид ViewController в Swift?
- 21. Представление Modal ViewController приводит к SIGABRT
- 22. Представление ViewController нежелательно видно между переходами
- 23. Представление ViewController заново не инициализирует его
- 24. iOS - представление ViewController с presentViewController: не работает
- 25. Обратите внимание, что представление загружается извне viewController
- 26. Представление ViewController в файле xib в SWIFT
- 27. Представление ViewController раскадровки в верхней части UIWebView
- 28. Получить родительское свойство на PHP
- 29. Расписание контейнерного времени на Кубернете?
- 30. Получить Top ViewController TabsWithNavigationControllerPresenter MVVMCross
Возможно ли, что вы пытаетесь получить родительский View Controller * до того, как * TableVC фактически был добавлен к нему? Где в вашем коде вы вызываете let parentVC = self.parent as! MainVC? – DonMag
@DonMag Это в func ViewDidLoad() – AlexBains
@DonMag Я просто переместил его в func ViewWillAppear(), и он сработал! Большое спасибо! – AlexBains