Как получить доступ к контроллеру супер просмотра?

У меня проблема, и я попытаюсь объяснить проблему:

  • У меня есть один главный 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, который его управляет (если он есть) или его супервизор (если это не так)