ios - 如何从 UIStoryboardPopoverSegue 获取由 UIPopoverController 包装的 View Controller ?

标签 ios uistoryboard xcode-storyboard

我有一个 UISplitViewController,其主 Controller 在 UINavigationController 中嵌入了一个 UIViewController。工具栏按钮负责通过 segue 启动 UIPopoverController。这种弹出 Controller 包装了一个 UIViewController,它也嵌入了一个 UINavigationController,称为 SettingsViewController。

我可以从 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;
  }
}

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

我缺少什么才能正确处理?

感谢您的帮助!

最佳答案

UIPopoverSegue 包含一个 UIPopoverController

UIPopoverController *popoverController = popoverSegue.popoverController;

有了这个你可以很容易的得到contentViewController(在popover中显示的 View )

UINavigationController *contentNC = (UINavigationController *) popoverController.contentViewController;

然后从内容导航 Controller ,你得到实际的 View Controller :

SettingsViewController *settingsVC = [contentNC.viewControllers lastObject];

这是否解决了您的问题?

关于ios - 如何从 UIStoryboardPopoverSegue 获取由 UIPopoverController 包装的 View Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12076509/

相关文章:

iphone - 未调用 UIImagePickerController 委托(delegate)方法(委托(delegate)设置为自身)

xamarin.ios - 支持两个 Storyboard

Xcode OS X Storyboard : How do I get a reference to the top level "window content" view controller?

c# - 如何在 xamarin ios 中创建类别?

ios - 通过storyboards在同一个UICollectionView中注册多个header supplementary view

ios - 获取使用 Storyboard创建的 View Controller 的属性

php - RSA iOS 加密 & PHP 解密

ios - 在 Swift 中更改我的 @IBAction 按钮的外观

php - 数据没有被发送到数据库,因为它无法读取

ios - 当我在 Storyboard 模式下单击 Viewcontroller 时,布局会发生变化