我有一个父视图控制器,它有两个嵌入式控制器,我使用Storyboard链接起来。我试图通过使用委托来允许ViewControllers之间的通信。
问题是,我在尝试分配委托时遇到困难,因为我在父级中没有ChildViewController
的引用。基本上,我正在寻找ParentViewController.m
中的某个地方插入代码
ChildViewController.delegate = self;
我尝试为每个ChildViewControllers创建IBOutlets
,但我似乎无法在故事板中正确分配它们。
答案 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;
}
}