ios – 将一个UIButton连接到2个赛段

我有一个UIButton,我试图将它连接到两个赛段。 哪个segue被使用取决于许多条件。

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

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

我相信我的代码是正确的(我已经包括了它),但问题是,在故事板视图中,我可以连接一个button只有一个视图控制器使用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]; } } 

在故事板窗口中,控制从视图底部的视图控制器图标拖动并拖动到目标视图控制器,给予Segue标识符,并重复下一个Segue。

除非要将某些数据传递给其他视图控制器,否则不需要在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]; } } 

我经常这样做。 我的方法是做两个“手动”的塞格。

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

那么你的代码应该正常工作,我会想。 我遇到了一个问题,我有一个button从一个button – 然后 – 我也试图调用一个不同的赛格。 通过这些通用的“控制器到控制器”的继续,他们被设置为手动调用,就像你正在做的那样。

Swift 3

在Storyboard中,按住Ctrl DestAViewControllerDestBViewController ,从SourceViewController创build到DestAViewControllerDestBViewController ,并给每个DestBViewController一个标识符(例如“ToDestA”和“ToDestB”)。 然后:

  @IBAction func onButton(_ sender: Any) { if (testForA){ self.performSegue(withIdentifier: "ToDestA", sender: Any?) } else { self.performSegue(withIdentifier: "ToDestB", sender: Any?) } }