2009-06-23 62 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. 我我modalControllersecondaryController使用我能夠從發送消息:

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

    注: 「自我」 對應於modalController

  7. 我需要 「myObject的」 傳遞給我的mainController,但我不能從secondaryController參考我的mainController。我嘗試這樣做:

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

    注: 「自我」 對應於secondaryController

    ,但它不使用工作,我可以訪問我的mainController的觀點:self.view.superview

    注意:「self」is my secondaryController

,但不對其控制器。

回答

32

在您的輔助控制器,嘗試

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

和檢查,如果這是你要找的視圖控制器。

蘋果的-[UIResponder nextResponder]文檔:

的UIView通過返回管理它的UIViewController對象實現此方法(如果有的話),或者它的父(如果它不)

+1

感謝尼古拉!!!!!!!!!!!!!!!!! 這工作完美:) 謝謝 從瓜達拉哈拉墨西哥的問候! Alejandra :) – Alejandra 2009-06-23 20:04:22

相關問題