4

2 つのビューコントローラーがViewControllerAありViewControllerB、そこからボタンをviewcontrollerA押すとviewControllerB. viewControllerBただし、プッシュする前にfromのプロパティを設定したいと思いますviewControllerA。しかしnil、から変数をチェックしたときに得られるのは値だけですviewControllerB。私がしていることは次のとおりです。

ViewControllerA

VCB = [[ViewControllerB alloc]init];
[VCB setPropertyOfViewControllerB:someString];
NSLog(@"value: %@", VCB.PropertyOfViewControllerB); // Here I observe the correct value so I set successfully

しかし、私もそれに到達したいのですが、変数viewControllerBを取得nilします。

ViewControllerB

//I already defined in h file as property
NSString *PropertyOfViewControllerB;
@property(nonatomic, retain) NSString *PropertyOfViewControllerB;

しかし、ViewControllerBのviewDidLoadメソッドで値を確認しようとすると

NSLog(@"value: %@", PropertyOfViewControllerB);//here I get null not the value I set at viewControllerA

おそらく、私が理解できなかった小さな点を見逃しています。どんな助けでも素晴らしいでしょう。ありがとう。


編集:ストーリーボードを使用しています。次のコードでプッシュします。

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil];
    lvc = [storyboard instantiateViewControllerWithIdentifier:@"mainManu"];
    [self.navigationController pushViewController:lvc animated:YES];
4

1 に答える 1

7

Storyboardを使用VCB = [[ViewControllerB alloc]init];してプッシュする場合、VCB は Storyboard で使用される ViewController と同じではありません。これを試して:

 - (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
     if ([[segue identifier] isEqualToString:@"yourSegueName"]) {
         ViewControllerB *vc = [segue destinationViewController];
         [vc setPropertyOfViewControllerB:@"foo"];
     }  
}
于 2013-04-17T15:13:02.373 に答える