ios - 将一个UIButton连接到2段

问题描述:

我有一个UIButton,我试图将它连接到两个segues。使用哪个赛格取决于许多条件。ios - 将一个UIButton连接到2段

例如,当的UIButton(标题为 “下一个”)时,

如果(条件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]; 
     } 
} 

在故事板窗口,从该视图底部的视图控制器图标调速拖动,并将其拖动到目标视图控制器,给SEGUE的标识符,并重复下一个赛格。

+0

但它是从viewController,而不是从按钮。如果我理解正确。 – 2014-02-19 11:00:41

+1

这是正确的。没有任何赛段是“物理”连接到按钮的。 – 2014-02-19 13:31:00

+0

故事板只让我按ctrl +从它拖动一个segue。在一个segue拥有作为视图控制器的源代码之后,我无法再让该视图控制器成为新的segue的源代码。这是新的吗? – 2017-08-17 16:08:10

你,除非你希望将一些数据传递给其他视图控制器

-(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]; 

     } 
} 

我经常这样做不需要提及任何代码prepareForSegue。我的方法是制作两个“手动”游戏。

  • 在Interface Builder CTRL +拖动从视图控制器1查看这个赛格瑞在IB控制器2
  • 点击,进入属性和名称及其标识:nextButtonID
  • 创建第二SEGUE,并按照相同的步骤将其命名为next2ButtonID

那么你的代码应该可以正常工作,我觉得。我遇到了一个问题,我从一个按钮开始继续 - 然后 - 我也试着调用不同的继续。通过使这些通用的“控制器到控制器”的继续,他们被设置为手动调用,就像你正在做的那样。

夫特3

在故事板,CTRL +拖动创建塞格斯从SourceViewControllerDestAViewControllerDestBViewController,并给每个原因请看的标识符(例如 “ToDestA” 和 “ToDestB”)。然后:

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