9

我有一个 UIButton,我正在尝试将它连接到两个 segue。使用哪种 segue 取决于许多条件。

例如,当按下 UIButton(标题为“next”)时,

如果(条件 1)然后转到屏幕 A。否则转到屏幕 B。

我相信我的代码是正确的(无论如何我已经包含了它),但问题是在故事板视图中,我可以使用 segue 将一个按钮连接到一个视图控制器。我该如何解决 ?

这是我正在使用的代码 -

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
        if([[segue identifier]isEqualToString:@"nextButtonID"]){
            creditCardViewController *cvc = [segue destinationViewController];
        }
        else if([[segue identifier]isEqualToString:@"next2ButtonID"]){
            depositInfoViewController *divc = [segue destinationViewController];
        }
}

-(IBAction)nextClicked{
        if([accountType isEqualToString:@"patron"]){
            [self performSegueWithIdentifier:@"nextButtonID" sender:self];
        }
        else{
            [self performSegueWithIdentifier:@"next2ButtonID" sender:self];
        }
}
4

4 回答 4

18

在情节提要窗口中,从视图底部的视图控制器图标控制拖动并将其拖动到目标视图控制器,给 segue 一个标识符,然后重复下一个 segue。

于 2012-07-19T02:37:26.963 回答
4

prepareForSegue除非您想将一些数据传递给其他视图控制器,否则您不需要提及任何代码

-(IBAction)nextClicked
{  
    if ([strCheck isEqualToString:@"launch Screen A"])
        {
            UIStoryboard *storyboard=[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];

            ScreenA *screenA = (ScreenA *)[storyboard instantiateViewControllerWithIdentifier:@"ScreenA"];
            [self.navigationController pushViewController:screenA animated:NO];

        }
        else
        {

            UIStoryboard *storyboard=[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];

            ScreenB *screenB = (ScreenB *)[storyboard instantiateViewControllerWithIdentifier:@"ScreenB"];

            [self.navigationController pushViewController:screenB animated:NO];

        }
}
于 2014-02-19T11:25:00.487 回答
1

我经常这样做。我的方法是制作两个“手动”segues。

  • 在界面生成器中 ctrl+从 View Controller 1 拖动到 View Controller 2
  • 在 IB 中单击此 segue 并转到属性并将其命名为标识符:nextButtonID
  • 创建第二个 segue 并按照相同的步骤将其命名为next2ButtonID

那么我认为你的代码应该可以正常工作。我遇到了一个问题,我有一个从按钮开始的转场 - 然后 - 我也试图调用一个不同的转场。通过将这些设置为通用的“控制器到控制器”序列,它们被设置为在您执行操作时手动调用。

于 2014-02-19T11:41:32.760 回答
1

斯威夫特 3中:

在情节提要中,按 ctrl+拖动以创建从SourceViewControllerDestAViewController和的转场DestBViewController,并为每个转场指定一个标识符(例如“ToDestA”和“ToDestB”)。然后:

    @IBAction func onButton(_ sender: Any) {
    if (testForA){
        self.performSegue(withIdentifier: "ToDestA", sender: Any?)
    } else {
        self.performSegue(withIdentifier: "ToDestB", sender: Any?)
        }
    }
于 2017-09-29T23:43:59.330 回答