如果我们遇到三个ViewControllers的情况。黄色,绿色和白色。
你可以穿过黄色和绿色的白色。请参阅图片以获得更多说明:
当我从黄色变为白色时,我准备了segue并将NSUinteger jimmy_hendrix值设置为0;
当我从绿色变为白色时,我准备segue并将NSUinteger jimmy_hendrix值设置为1;
在白色VC中,我做了IBAction并连接了一个BACK按钮。在那里,根据值我想要解开我最终在白色VC中的segue。
这是我使用的代码:
- (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键从BACK按钮退出然后选择unwind segue方法,因为我想要执行两个unwinds,基于哪个VC和我使用的segue。
这是什么解决方案? 如何在第一时间回到我曾经使用过的ViewvController?
重要提示:我知道我可以创建新的细分,从白色到黄色和绿色,然后调用它们。但是我不想要那个......我不想制作新的片段,我想以编程方式解开现有的片段。
编辑:我忘了提到我确实在绿色和黄色VC中放松了方法
-(IBAction)fromYellowToWhite:(UIStoryboardSegue *)segue {
}
-(IBAction)fromGreenToWhite:(UIStoryboardSegue *)segue {
}
答案 0 :(得分:2)
您需要创建展开segues。在YellowVC中创建一个方法
-(IBAction)fromYellowToWhite:(UIStoryboardSegue *)segue {
}
并在GreenVC中创建方法
-(IBAction)fromGreenToWhite:(UIStoryboardSegue *)segue {
}
然后从白色的UIViewController
实例拖动到白色场景中的“退出”图标,然后选择fromYellowToWhite
。重复此操作并选择fromGreenToWhite:
最后,选择新创建的展开Segues并将标识符设置为“fromYellowToWhite”和“fromGreenToWhite” - 它们应该具有“fromYellowToWhite:”和“fromGreenToWhite:”的“动作”
答案 1 :(得分:1)
您不必从BACK按钮拖动到“Exit”,但可以从视图控制器本身拖动到“Exit”。这样做两次。一个将用于退出黄色VC,一个用于退出绿色VC。
现在在IB中你将有两个新的segue,你可以将它们命名为“WhiteToYellowUnwindSegue”等......
现在要执行这些,你可以......
[self performSegueWithIdentifier:@"WhiteToYellowUnwindSegue" sender:self];
等...