2009-06-23 13 views
10

У меня есть проблема, и я попытаюсь объяснить этот вопрос:Как получить доступ к контроллеру представления супер?

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

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

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

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

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

    Примечание: "Я" соответствует modalController

  7. мне нужно пройти "MyObject" в мой mainController, но я не могу сделать ссылку на мой mainController от secondaryController. Я попытался это:

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

    Примечание: "Я" соответствует secondaryController

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

    ПРИМЕЧАНИЕ: "Я" мой secondaryController

, но нет его контроллера.

ответ

32

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

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

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

документация Яблока -[UIResponder nextResponder]:

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

+1

Спасибо Николаю !!!!!!!!!!!!!!!!! Это сработало отлично :) спасибо С уважением, Гвадалахара! Alejandra :) – Alejandra

+1

Добро пожаловать (из Берлина, Германия) –

Смежные вопросы