2013-04-21 69 views
0

进出口设立一个IBAction为改变一个表行后视图之前选择&完成按钮被按下。的iOS:设置属性更改查看

然而,当我运行presentViewController:动画我失去我navigationController。

所以后来我没有办法去任何地方,然后如果我做,而不是“performSegueWithIdentifier”我的属性不保存。所以没有值传递...例如:

ViewController *addViewController = (ViewController *)[self.storyboard instantiateViewControllerWithIdentifier:@"V_SignIn"]; 
addViewController.LoadAction = @"NoSession"; 
[addViewController setModalTransitionStyle:UIModalTransitionStyleCrossDissolve]; 
[self presentViewController:addViewController animated:YES completion:NULL]; 

^^该代码的作品,但我删除导航工具栏...

ViewController *addViewController = [[ViewController alloc] init]; 
addViewController.LoadAction = @"TEST"; 
[self performSegueWithIdentifier:@"segue" sender:self]; 

^^执行Segue公司罚款,但“LoadAction”变种等于(NULL)时,我的NSLog它在新视图。

基本上,我该怎么设置,而无需通过与addViewController VAR更改视图跟随@property?谢谢。

回答

3

在你的第一个方案,而不是-presentViewController:animated:completion:,您需要使用您的-pushViewController:animated:导航控制器,以避免隐藏它(相反,你会使用-popViewController:animated:,也称为导航控制器上,将其关闭,而不是-dismissViewControllerAnimated:completion: ):

ViewController *addViewController = (ViewController *)[self.storyboard instantiateViewControllerWithIdentifier:@"V_SignIn"]; 
addViewController.LoadAction = @"NoSession"; 
[self.navigationController pushViewController:addViewController animated:YES]; 

由于北斗星指出,在第二种情况下,你需要做你的addViewController配置-prepareForSegue:sender:像这样:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([segue.identifier isEqualToString:@"segue"]) { 
     ViewController *addViewController = (ViewController*)segue.destinationViewController; 
     // perform setup on addViewController 
     addViewController.LoadAction = @"TEST"; 
     // ... 
    } else if ([segue.identifier isEqualToString:@"someOtherSegue"]) { 
     // ... 
    } 
} 
+0

你,先生,是我的救命恩人! – 2013-04-22 04:14:27

2

从代码的第二部分,只要使用[self performSegueWithIdentifier:@"segue" sender:self];来创建和显示新的视图。还实现- prepareForSegue:sender:(在触发上面的代码视图控制器)来执行新的视图控制器的配置。

+0

感谢ÿ我们的帮助! – 2013-04-22 04:19:04