Как получить доступ к контроллеру представления супер? - PullRequest
10 голосов
/ 23 июня 2009

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

  1. У меня есть один основной UIViewController (весь экран)
  2. У меня есть один вторичный UIViewController (setbounds)
  3. Я добавил свой дополнительный вид к своему mainView, используя это:

    [mainController.view addSubview:secondaryController.view];   
    
  4. Я создал третий контроллер: modalController, я добавил его к своему дополнительному контроллеру так:

    [secondaryController presentModalViewController:modalController animated:YES];
    
  5. Я делаю исчисление на основе некоторых событий внутри моего modelController.

  6. Я могу отправлять сообщения с моего modalController на мой secondaryController, используя:

    [[self parentViewController]  performSelector : @selector(myMethodInSecondaryController:) withObject : myObject afterDelay : .5];
    

    ПРИМЕЧАНИЕ: «self» соответствует modalController

  7. Мне нужно передать «myObject» моему mainController, но я не могу сделать ссылку на мой mainController из secondaryController. Я попробовал это:

    [[self parentViewController] performSelector : @selector(myMethodInMainController:) withObject:myObject afterDelay : .5];
    

    ПРИМЕЧАНИЕ:"self" соответствует secondaryController

    но это не работает, у меня есть доступ к представлению моего главного контроллера, используя: self.view.superview

    ПРИМЕЧАНИЕ:"Я" - это мое secondaryController

но нет контроллеру.

1 Ответ

32 голосов
/ 23 июня 2009

В вашем дополнительном контроллере попробуйте

id mainViewController = [self.view.superview nextResponder];

и проверьте, ищете ли вы контроллер вида.

Документация Apple -[UIResponder nextResponder]:

UIView реализует этот метод, возвращая объект UIViewController, который управляет им (если он есть) или его суперпредставлением (если он этого не делает)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...