如何从UIStoryboardPopoverSegue获取由UIPopoverController包装的视图控制器?

Tia*_*dez 0 ios uistoryboard xcode-storyboard

我有一个UISplitViewController,主人有一个嵌入在UINavigationController中的UIViewController.工具栏按钮负责通过segue启动UIPopoverController.这种弹出控制器包装了一个UIViewController,它也嵌入在一个名为SettingsViewController的UINavigationController中.

我可以从UIStoryboardPopoverSegue获取指向UIPopoverController的指针:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(UITableViewCell *)sender
{
  if ([segue.identifier isEqualToString:@"Settings"]) {
    UIStoryboardPopoverSegue *popoverSegue = (UIStoryboardPopoverSegue*) segue;

    SettingsViewController *settingsViewController = ... // TODO
    settingsViewController.popoverController = popoverSegue.popoverController;
  }
}
Run Code Online (Sandbox Code Playgroud)

但我找不到一种方法来获取内部SettingsViewController的引用.我不想使用通过类方法可访问的静态字段,这将是一个可怕的解决方法.

我错过了什么才能做到正确?

谢谢你的帮助!

luk*_*lte 5

UIPopoverSegue包含一个UIPopoverController

UIPopoverController *popoverController = popoverSegue.popoverController;
Run Code Online (Sandbox Code Playgroud)

有了这个,您可以轻松获取contentViewController(视图显示在popover中)

UINavigationController *contentNC = (UINavigationController *) popoverController.contentViewController;
Run Code Online (Sandbox Code Playgroud)

从内容导航控制器,您获得实际的视图控制器:

SettingsViewController *settingsVC = [contentNC.viewControllers lastObject];
Run Code Online (Sandbox Code Playgroud)

这会解决您的问题吗?