iOS:在更改视图之前设置属性

时间:2013-04-21 22:13:28

标签: ios objective-c

设置IBAction以在选择表格行后更改视图&按下完成按钮。

然而,当我运行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罚款,但是当我在新视图中对其进行NSLog时,'LoadAction'var等于(NULL)。

基本上,如何设置@property而无需使用addViewController var更改视图?感谢。

2 个答案:

答案 0 :(得分: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

正如Wain所说,在第二种情况下,您需要在-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"]) { // ... } } ,如下所示:

{{1}}

答案 1 :(得分:2)

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