0

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

你可以通过黄色和绿色的一个来得到白色的。请参阅图片以获取更多说明:

在此处输入图像描述

当我从黄色转为白色时,我准备转场并将 NSUinteger jimmy_hendrix 值设置为 0;

当我从绿色转为白色时,我准备转场并将 NSUinteger jimmy_hendrix 值设置为 1;

在白色的 VC 中,我创建了 IBAction 并将一个 BACK 按钮连接到它。在那里,根据我想要解除我在白色 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 + 从 BACK 按钮拖动退出然后选择 unwind segue 方法,因为我想要执行两个展开,基于我使用的 VC 和哪个 segue。

有什么解决方案?如何首先回到我用来到达目的地的任何 ViewvController?

重要提示:我知道我可以制作新的 segues,从白色到黄色和绿色并调用它们。但我不想那样……我不想制作新的转场,我想以编程方式展开现有的转场。

编辑:我忘了提到确实我用绿色和黄色 VC 制作了展开方法

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


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

2 回答 2

2

您需要创建展开转场。在 YellowVC 中创建一个方法

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

并在 GreenVC 中创建一个方法

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

然后从 White 中的实例拖动到UIViewControllerWhite 场景中的“退出”图标并选择fromYellowToWhite。重复此操作并选择fromGreenToWhite:

最后,选择新创建的展开 Segue 并将标识符设置为“fromYellowToWhite”和“fromGreenToWhite”——它们应该有一个“action”为“fromYellowToWhite:”和“fromGreenToWhite:”

于 2014-10-02T10:42:09.743 回答
1

您不必从 BACK 按钮拖动到“Exit”,但您可以从视图控制器本身拖动到“Exit”。这样做两次。一个用于黄色 VC 的出口,一个用于绿色 VC 的出口。

现在在 IB 中,您将拥有两个新的 segue,您可以将它们命名为“WhiteToYellowUnwindSegue”等...

现在要执行这些,您可以...

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

ETC...

于 2014-10-02T10:42:59.967 回答