IBOutlet链接到嵌入式视图控制器

Dan*_*n F 36 storyboard ios xcode4.5

我有一个复杂的iPad视图,我通过拥有几个视图控制器来管理.我以前(在iOS6/XCode 4.5之前)通过在代码中分配我的视图控制器来实现这一点,并通过指向主视图的链接将各种视图连接到它们.

我想要做的是使用新的容器视图将视图控制器嵌入到storyboard文件中.我似乎无法将嵌入式视图控制器的IBOutlet链接到主控制器.

是否有可能做到这一点?或者通过标签或代码中的某些内容检索嵌入式控制器?

这个问题特别关于使用容器视图

Pla*_*eek 69

某些情况的另一种选择是使用捕获嵌入式控制器-prepareForSegue:sender:.

例如,如果我在a中UINavigationController嵌入了嵌入CustomContainerViewController,我可以embedContentStack在故事板中命名嵌入segue 并在CustomContainerViewControllervia中捕获它

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"embedContentStack"]) {
        // can't assign the view controller from an embed segue via the storyboard, so capture here
        _contentStack = (UINavigationController *)segue.destinationViewController;
    }
}
Run Code Online (Sandbox Code Playgroud)


rde*_*mar 22

我不确定你的意思是"检索嵌入式控制器".如果要使用控制器,请使用UIStoryboard方法instantiateViewControllerWithIdentifier:,使用您在IB中为控制器提供的标识符.您还可以使用performSegueWithIdentifier:sender:方法(它还实例化视图控制器).您应该查看Apple文档中的"在应用程序中使用视图控制器"部分.它还引用了子视图控制器与容器控制器同时实例化的事实.

编辑后:如果在另一个视图控制器中嵌入容器视图,那么嵌入视图的控制器可以从包含控制器的self.childViewControllers引用(这将是一个数组,所以如果只有一个,你可以使用lastObject获取它) .