容器视图控制器委托分配

cho*_*xin 4 objective-c ios

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

问题是,我被困在尝试分配委托,因为我没有ChildViewController在父母的参考.基本上,我正在寻找ParentViewController.m插入代码的地方

ChildViewController.delegate = self;
Run Code Online (Sandbox Code Playgroud)

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

rde*_*mar 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;
    }
}
Run Code Online (Sandbox Code Playgroud)