0

我正在构建一个使用三个 UIViewControllers 的应用程序。我正在使用导航控制器进行导航。第一个视图控制器 (v1) 将有两个文本框和一个按钮。在按钮单击时,我有一个检查某些条件的功能,如果满足,那么我移动到第二个视图控制器(v2),否则我想移动到第三个视图控制器(v3)。如何通过代码实现?

最后一件事,我想捕获这些文本框值并在适当的视图控制器中使用它们。这怎么可能?

4

2 回答 2

1

在以编程方式过渡到情节提要中的另一个场景方面,一般过程是:

  • 在视图控制器(不是按钮,而是视图控制器)之间定义一个 segue;

  • 给那个segue一个故事板标识符;

  • 为进行验证的按钮创建一个IBAction,如果成功,则执行

    [self performSegueWithIdentifier:@"myidentifier"];
    

请参阅有关堆栈溢出的答案,其中我详细介绍了个人完成此过程。如果是您的情况,听起来您正在验证数据,并且可能在给定一系列条件的情况下执行一个转场,并在另一系列条件下执行另一个转场。因此,只需为这两个 segues 提供唯一标识符,然后您就可以在IBAction代码中执行您想要的任何一个。

就将数据传递到下一个场景而言,您可以在一个单独的方法中执行此操作,prepareForSegueiOS 在创建目标控制器之后、呈现之前调用该方法。在这里,您有机会将参数传递给目标控制器。例如,我假设我捕获了个人的名字和姓氏,并希望将其传递给具有名字和姓氏属性的目标控制器:

- (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;
    }
}
于 2012-12-23T04:02:47.813 回答
1

从 iOS 6.0 开始,您可以-shouldPerformSegueWithIdentifier:sender:在控制器中实现。比你在 iOS 5 中必须做的要简单得多。

于 2012-12-23T04:12:45.910 回答