Cocoa touch 如何以编程方式指定segue(而不是执行segue)?

Cocoa touch 如何以编程方式指定segue(而不是执行segue)?,cocoa-touch,segue,Cocoa Touch,Segue,我想获取标识符为“toNextView”的segue的destinationViewController 然后表演一段 我遇到的困难是我有一个不安全的例外 这是否意味着视图控制器不知道segue的存在? 我已经用一个序列连接了两个控制器。看一下 触发segue时,脚本运行时将调用prepareForSegue:sender:方法。它并不意味着被调用来执行segue 以下是课堂参考的解释: 当触发segue时,但在视觉转换发生之前, 情节提要运行时调用当前视图控制器的 prepareforsgue

我想获取标识符为“toNextView”的segue的destinationViewController 然后表演一段 我遇到的困难是我有一个不安全的例外 这是否意味着视图控制器不知道segue的存在? 我已经用一个序列连接了两个控制器。

看一下

触发segue时,脚本运行时将调用prepareForSegue:sender:方法。它并不意味着被调用来执行segue

以下是课堂参考的解释:

当触发segue时,但在视觉转换发生之前, 情节提要运行时调用当前视图控制器的 prepareforsgue:sender:method,以便它可以将任何需要的数据传递给 将要显示的视图控制器

从类参考中:

您仍然可以使用 performsguewithidentifier:sender:UIViewController的方法 希望您可以这样做,从添加的源启动segue 以编程方式,因此在Interface Builder中不可用

因此,只需为按钮指定选择器,然后在选择器内部调用performsguewithidentifier:sender:method

如果要将对象传递给segue的目标视图控制器,则prepareForSegue:sender:方法将发挥作用,如类引用中所述,例如:

[btn addTarget:self action:@selector(whateverAction) forControlEvents:UIControlEventTouchUpInside];

- (void)whateverAction {
    [self performSegueWithIdentifier:@"toNextView" sender:nil];
}

谢谢,但我可以在将数据传递给destiniation view controller?@user2429523时使用Identifier执行sgueWithIdentifier这是prepareForSegue方法的用法。我更新了我的答案。太好了…它解决了,添加问题:如何将单击按钮的标记发送到目标viewcontroller?@user2429523在目标视图控制器中定义一个属性,并在PrepareForSegue中使用您的标记进行设置我在AVIEW中有不同的按钮,是否可以获取单击按钮的标记?(使用触摸开始?)
[btn addTarget:self action:@selector(whateverAction) forControlEvents:UIControlEventTouchUpInside];

- (void)whateverAction {
    [self performSegueWithIdentifier:@"toNextView" sender:nil];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"toNextView"]) {
        DestinationViewController *vc = (DestinationViewController *)[segue destinationViewController];
        //do whatever you want to do with vc, including passing of data, setting property, etc.
    }
}