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