xcode storyboard容器视图 - 如何访问viewcontroller

Jus*_*808 48 xcode objective-c uiviewcontroller ios container-view

我正在尝试使用故事板并让事情正常运行.我已经在我现有的一个视图中添加了一个Container View.当我尝试在我的视图控制器.h文件(ctrl-drag)中添加对此的引用时,我得到了一个IBOutlet UIView *containerView.如何获取对容器视图的视图控制器的引用?我需要容器视图控制器,所以我可以将它的委托设置到我的视图控制器,这样他们就可以相互"交谈".

我将故事板设置为:

在此输入图像描述

它在我的.h文件中引用为:

在此输入图像描述

请注意.h中的是UIView,而不是我的视图的InstallViewController.如何添加对视图控制器的引用?我需要能够设置其委托.

DAX*_*lic 69

通过指定嵌入segue的标识符并在方法中检索相应的视图控制器,存在另一种解决方案 prepareForSegue:

这种方式的优点是您不必依赖于添加子视图控制器的特定顺序,因为每个子视图控制器都是通过唯一的segue标识符嵌入的.

更新2013-01-17 - 示例

- (void) prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender
{
    // -- Master View Controller
    if ([segue.identifier isEqualToString:c_SegueIdEmbedMasterVC])
    {
        self.masterViewController = segue.destinationViewController;
        // ...
    }
    // -- Detail View Controller
    else if ([segue.identifier isEqualToString:c_SegueIdEmbedDetailVC])
    {
        self.detailViewController = segue.destinationViewController;
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

c_SegueIdEmbedMasterVC&c_SegueIdEmbedDetailVC是具有故事板中定义的segue ID的相应ID的常量.

  • 对不起,我迟到了.我确信你在此期间自己解决了问题,但最终示例代码将来会帮助其他人. (2认同)
  • 上帝回答.我之前尝试过这个技巧,只有在阅读完这个答案后,才意识到只有你设置了Segue Identifiers才有效.但是我会使用isKindOfClass:而不是. (2认同)

vfr*_*chi 14

当您添加容器视图时,xcode会调用UIViewController方法 addChildViewController:

在您的情况下,您可以在SplashViewController的列表中获取容器ViewController查找它childViewControllers,如下所示:

for (UIViewController *childViewController in [self childViewControllers])
{
    if ([childViewController isKindOfClass:[InstallViewController class]])
    {
        //found container view controller
        InstallViewController *installViewController = (InstallViewController *)childViewController;

        //do something with your container view viewcontroller

        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

我昨天有同样的疑问:)