容器视图控制器委托分配

时间:2013-11-03 15:28:41

标签: ios objective-c

我有一个父视图控制器,它有两个嵌入式控制器,我使用Storyboard链接起来。我试图通过使用委托来允许ViewControllers之间的通信。

问题是,我在尝试分配委托时遇到困难,因为我在父级中没有ChildViewController的引用。基本上,我正在寻找ParentViewController.m中的某个地方插入代码

ChildViewController.delegate = self;

我尝试为每个ChildViewControllers创建IBOutlets,但我似乎无法在故事板中正确分配它们。

1 个答案:

答案 0 :(得分:11)

有几种方法可以做到这一点。在代码中,您可以使用self.childViewControllers获取对子视图控制器的引用,该引用为您提供了所有子项的数组。首选方法,可能是使用prepareForSegue:sender:。这将在实例化父控制器时调用,并且您可以使用segue.destinationViewController获取对子项的引用。给每个嵌入segues标识符,以便您可以知道哪个segue正在调用prepareForSegue。有点像这样:

@interface ViewController ()
@property (strong,nonatomic) UIViewController *topController;
@property (strong,nonatomic) UIViewController *bottomController;
@end

@implementation ViewController


-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"topEmbed"]) {
        self.topController = segue.destinationViewController;
    }else if ([segue.identifier isEqualToString:@"bottomEmbed"]){
        self.bottomController = segue.destinationViewController;
    }
}