如何访问超级视图控制器?

Ale*_*dra 10 cocoa-touch uiviewcontroller uiview

我有问题,我会尝试解释这个问题:

  1. 我有一个主UIViewController(全屏)
  2. 我有一个二级UIViewController(setbounds)
  3. mainView使用这个添加了我的辅助视图:

    [mainController.view addSubview:secondaryController.view];   
    
    Run Code Online (Sandbox Code Playgroud)
  4. 我创建了第三个控制器:modalController我将它添加到我的辅助控制器中,如下所示:

    [secondaryController presentModalViewController:modalController animated:YES];
    
    Run Code Online (Sandbox Code Playgroud)
  5. 我根据我的一些事件制作微积分modelController.

  6. 我能够从我的modalController用户发送消息secondaryController:

    [[self parentViewController]  performSelector : @selector(myMethodInSecondaryController:) withObject : myObject afterDelay : .5];
    
    Run Code Online (Sandbox Code Playgroud)

    注意: "self"对应于modalController

  7. 我需要将"myObject"传递给我mainController,但是我无法mainController从中获取secondaryController.我试过这个:

    [[self parentViewController] performSelector : @selector(myMethodInMainController:) withObject:myObject afterDelay : .5];
    
    Run Code Online (Sandbox Code Playgroud)

    注意: "self"对应于secondaryController

    但它不起作用,我可以访问我的mainController的视图使用: self.view.superview

    注意: "自我"是我的secondaryController

但没有控制器.

Nik*_*uhe 32

在您的辅助控制器中,尝试

id mainViewController = [self.view.superview nextResponder];
Run Code Online (Sandbox Code Playgroud)

并检查这是否是您正在寻找的视图控制器.

Apple的文档-[UIResponder nextResponder]:

UIView通过返回管理它的UIViewController对象(如果有的话)或超级视图(如果没有)来实现此方法