4

ストーリーボードを使用してリンクした2つの組み込みコントローラーを持つ親ビューコントローラーがあります。デリゲートを使用して ViewController 間の通信を許可しようとしています。

ChildViewController問題は、親に自分の参照がないため、デリゲートを割り当てようとして立ち往生していることです。ParentViewController.m基本的に、コードを挿入する場所を探しています

ChildViewController.delegate = self;

IBOutletsChildViewControllers ごとに作成しようとしましたが、ストーリーボードで適切に割り当てることができないようです。

4

1 に答える 1

11

これを行うにはいくつかの方法があります。コードでは、self.childViewControllers を使用して子ビュー コントローラーへの参照を取得できます。これにより、すべての子の配列が得られます。推奨される方法は、おそらく prepareForSegue:sender: を使用することです。これは、親コントローラーがインスタンス化されたときに呼び出され、segue.destinationViewController で子への参照を取得できます。各埋め込みセグエ識別子を指定して、どのセグエが 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 に答える