如何以编程方式放松到2个不同的VC

如果我们有一个你有三个ViewController的情况。 黄,绿,白一个。

你可以通过黄色和绿色的到达白色的。 请参阅图片以获取更多解释:

在这里输入图像说明

当我从黄色变为白色时,我准备继续并将NSUinteger的jimmy_hendrix值设置为0;

当我从绿色变为白色时,我准备继续并将NSUinteger的jimmy_hendrix值设置为1;

在白色的VC里面,我做了IBAction并连接了一个BACKbutton。 在那里,根据价值我想放松我最终在白色VC的赛格。

这是我使用的代码:

- (IBAction)goBack:(UIButton *)sender { switch (_jimmy_hendrix) { case 0: [self performSegueWithIdentifier:@"fromYellowToWhite" sender:self]; break; case 1: [self performSegueWithIdentifier:@"fromGreenToWhite" sender:self]; break; } } 

但是,我得到一个例外:

 'Receiver (<WhiteVC: 0x15d8c850>) has no segue with identifier 'fromSuperTraenerToSuperTraenerQuestions 

为了清楚起见,我从来没有按CTRL +从BACKbutton退出,然后selectunwind segue方法,因为有两个unwind我想执行,根据哪个VC和哪个segue我用。

这是什么解决scheme? 如何继续回到我第一次得到我的destionation的任何ViewvController?

重要:我知道我可以做出新的赛段,从白色到黄色和绿色,并给他们打电话。 但是我不想要这样做。我不想做新的事情,我想以编程的方式放松现有的事情。

编辑:我忘了提及,我确实在绿色和黄色VC做了放松的方法

 -(IBAction)fromYellowToWhite:(UIStoryboardSegue *)segue { } -(IBAction)fromGreenToWhite:(UIStoryboardSegue *)segue { } 

你需要创buildunwind segues。 在YellowVC中创build一个方法

 -(IBAction)fromYellowToWhite:(UIStoryboardSegue *)segue { } 

并在GreenVC中创build一个方法

 -(IBAction)fromGreenToWhite:(UIStoryboardSegue *)segue { } 

然后从白色的UIViewController实例拖动到白色场景中的“退出”图标,并从fromYellowToWhite到白色中select。 重复这fromGreenToWhite:并从fromGreenToWhite:selectfromGreenToWhite:

最后,select新创build的展开Segues,并将标识设置为“fromYellowToWhite”和“fromGreenToWhite” – 他们应该有一个“fromYellowToWhite:”和“fromGreenToWhite:”的“动作”

您不必从后退button拖动到“退出”,但是您可以从视图控制器本身拖动到“退出”。 这样做两次。 一个是退出到黄色的VC,一个是退出到绿色的VC。

现在在国际局你会有两个新的赛段,你可以把它们命名为“WhiteToYellowUnwindSegue”等。

现在执行这些你可以…

 [self performSegueWithIdentifier:@"WhiteToYellowUnwindSegue" sender:self]; 

等等…