设置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更改视图?感谢。
答案 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:
(在触发上述代码的视图控制器中)来执行新视图控制器的配置。