Как получить доступ к контроллеру супер просмотра?
У меня проблема, и я попытаюсь объяснить проблему:
- У меня есть один главный
UIViewController
(весь экран)
- У меня есть один вторичный
UIViewController
(setbounds)
-
Я добавил свое вторичное представление к моему mainView
, используя это:
[mainController.view addSubview:secondaryController.view];
-
Я создал третий контроллер: modalController
, я добавил его в свой дополнительный контроллер следующим образом:
[secondaryController presentModalViewController:modalController animated:YES];
-
Я делаю исчисление, основанное на некоторых событиях внутри моего modelController
.
-
Я могу отправлять сообщения с моего modalController
на мой secondaryController
, используя:
[[self parentViewController] performSelector : @selector(myMethodInSecondaryController:) withObject : myObject afterDelay : .5];
ПРИМЕЧАНИЕ: "self" соответствует modalController
-
Мне нужно передать "myObject" на мой mainController
, но я не могу ссылаться на мой mainController
на secondaryController
. Я пробовал это:
[[self parentViewController] performSelector : @selector(myMethodInMainController:) withObject:myObject afterDelay : .5];
ПРИМЕЧАНИЕ: "self" соответствует secondaryController
но он не работает, у меня есть доступ к моему представлению mainController, используя: self.view.superview
ПРИМЕЧАНИЕ: "я" - это мой secondaryController
но нет его контроллеру.
Ответы
Ответ 1
В своем дополнительном контроллере попробуйте
id mainViewController = [self.view.superview nextResponder];
и проверьте, является ли это контроллером вида, который вы ищете.
Документация Apple на -[UIResponder nextResponder]
:
UIView реализует этот метод, возвращая объект UIViewController, который его управляет (если он есть) или его супервизор (если это не так)