如何以编程方式展开到2个不同的VC

时间:2014-10-02 10:33:16

标签: ios objective-c unwind-segue

如果我们遇到三个ViewControllers的情况。黄色,绿色和白色。

你可以穿过黄色和绿色的白色。请参阅图片以获得更多说明:

enter image description here

当我从黄色变为白色时,我准备了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 {
}

2 个答案:

答案 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];

等...