4

可以说我有两个视图控制器ViewControllerAViewControllerB当我按下一个按钮时,viewcontrollerA它正在推到viewControllerB. 但是在推送之前,我想设置viewControllerBfrom的属性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

如果您使用VCB = [[ViewControllerB alloc]init];但通过 Storyboard 推送,则 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 回答