4

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

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

ChildViewController.delegate = self;

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

4

1 回答 1

11

有几种方法可以做到这一点。在代码中,您可以使用 self.childViewControllers 获取对子视图控制器的引用,它为您提供了所有子视图控制器的数组。首选方法可能是使用 prepareForSegue:sender:。这将在父控制器实例化时调用,您可以使用 segue.destinationViewController 获取对子控制器的引用。给每个嵌入 segue 标识符,以便您知道哪个 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;
    }
}
于 2013-11-03T16:25:20.983 回答