LoginSignup
6
6

More than 5 years have passed since last update.

Containerとの値やり取り方法

Last updated at Posted at 2014-03-12

ViewControllerとCotainerViewの値やり取り方法に関して考察します。
完全に分離して表示や処理をする場合は問題ないですが、連携して操作する場合は値や状態のやり取りが必要になります。そこで以下のような方法でやり取りを実装しました。

  1. ContainerViewでdelegateを作成(SubViewDelegateとします)
  2. MainViewControllerでSubViewDelegateを実装します

そうすると、値のやり取りが可能です。

SubViewController.h
@protocol SubViewController

@required
- (void)testValue:(NSString *)testPhrase;
@end

@interface SubViewController : UIViewController

// ------- delegate --------
@property (weak, nonatomic) id<SubViewController> delegate;

...

@end
MainViewController.m

@interface MainViewController ()
<
SubViewController
>

@end

@implementation MainViewController

- (void)testValue:(NSString *)testPhrase{
...
}

@end

ここではまったのがdelegate=selfをどこに書くかです。
自分の思うような動作は、viewDidLoadに書いた場合実現できませんでした。。。
そこで、Storyboard上でContainerとのsegueにid名をつけて

MainViewController.m

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
   if ([segue.identifier isEqualToString:@"subViewSegue"]) {
        SubViewController *subView = segue.destinationViewController;
         subView.delegate = self;
   }
}

とするとうまく動作しました。

6
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6