我有一个UIButton,我正在尝试将它连接到两个segues。使用哪种segue取决于许多条件。
例如,当按下UIButton(标题为“next”)时,
if(条件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];
}
}
答案 0 :(得分:17)
在情节提要窗口中,控制从视图底部的视图控制器图标拖动并将其拖动到目标视图控制器,为segue指定一个标识符,然后重复下一个segue。
答案 1 :(得分: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];
}
}
答案 2 :(得分:1)
我经常这样做。我的方法是制作两个“手动”段。
然后你的代码应该可以正常工作我想。我遇到了一个问题,我从一个按钮开始有一个segue - 然后 - 我也试图调用一个不同的segue。通过将这些设置为通用的“控制器到控制器”段,可以设置为手动调用它们。
答案 3 :(得分:1)
在 Swift 3 :
在故事板中,按住Ctrl键并拖动以创建从SourceViewController
到DestAViewController
和DestBViewController
的分段,并为每个segue分配一个标识符(例如" ToDestA"和& #34; ToDestB&#34)。然后:
@IBAction func onButton(_ sender: Any) {
if (testForA){
self.performSegue(withIdentifier: "ToDestA", sender: Any?)
} else {
self.performSegue(withIdentifier: "ToDestB", sender: Any?)
}
}