我正在构建一个使用三个UIViewControllers的应用程序。我正在使用导航控制器进行导航。第一个视图控制器(v1)将有两个文本框和一个按钮。在按钮单击,我有一个功能,检查某些条件,如果它满意,然后我移动到第二个视图控制器(v2),否则我想移动到第三个视图控制器(v3)。如何通过代码实现?
最后一件事,我想捕获这些文本框值并在适当的视图控制器中使用它们。这怎么可能?
答案 0 :(得分:1)
就以编程方式过渡到故事板中的另一个场景而言,一般程序是:
在视图控制器之间定义一个segue(不是按钮,而是视图控制器);
给该segue一个故事板标识符;
为执行验证的按钮创建IBAction
,如果成功,则执行
[self performSegueWithIdentifier:@"myidentifier"];
请参阅此answer on stack overflow,其中我详细介绍了此过程中的个人。如果你的情况,这听起来像你正在验证数据,并且可能在给定一系列条件的情况下执行一个segue,在另一系列条件中执行另一个segue。因此,只需为这两个segues提供唯一标识符,然后您就可以在IBAction
代码中执行您想要的任何一个。
在将数据传递到下一个场景方面,您可以使用单独的方法prepareForSegue
执行此操作,iOS在目标控制器创建之后但在它出现之前调用。在这里,您有机会将参数传递给目标控制器。例如,我假设我捕获了个人的名字和姓氏,并希望将其传递给目标控制器,该目标控制器具有名字和姓氏属性:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"myidentifier"])
{
MyDestinationController *controller = segue.destinationViewController;
controller.firstName = self.labelFirstName.text;
controller.lastName = self.labelLastName.text;
}
}
答案 1 :(得分:1)
从iOS 6.0开始,您可以在控制器中实现-shouldPerformSegueWithIdentifier:sender:
。比你在iOS 5中所做的要简单得多。