Ios segues是否仅适用于导航控制器?

Ios segues是否仅适用于导航控制器?,ios,uinavigationcontroller,storyboard,Ios,Uinavigationcontroller,Storyboard,我曾尝试使用故事板从一个ViewController切换到另一个ViewController,但它引发了一个异常 segues是否仅适用于NavigationController?当我尝试这种方法时,它起了作用。如果您将您的ViewController嵌入到UINavigationController中,使用从ViewControllerA到ViewControllerB的情节提要: - (void)prepareForSegue:(UIStoryboardSegue *)segue sende

我曾尝试使用故事板从一个ViewController切换到另一个ViewController,但它引发了一个异常


segues是否仅适用于NavigationController?当我尝试这种方法时,它起了作用。

如果您将您的ViewController嵌入到
UINavigationController
中,使用从
ViewControllerA
ViewControllerB
的情节提要:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"showDetail"]) 
    {
        UINavigationController *navController = (UINavigationController *)segue.destinationViewController;
        ViewControllerB *viewControllerB = (ViewControllerB *)navController.topViewController;

        // Pass data (for example a NSString object)
        viewControllerB.aString = myString;
    }
}

如果从一个
ViewController
到另一个
ViewController
创建了一个
Segue,那么您需要以编程方式执行它,因为只有视图等可视元素可以响应用户事件,因此没有用户交互,
ViewController
就无法知道何时执行
Segue

下面是如何以编程方式完成的

  • 在界面生成器中设置
    Segue
    标识符

  • 调用
    [self-PerformsgueWithIdentifier:@“MySegueIdentifier”发送方:nil]响应事件,即按钮的
    触碰内部执行该操作

  • 这篇文章有更多的信息:


    注意:如果您没有使用
    NavigationController
    ,则不能使用Push
    Segue
    转换,因为这需要
    NavigationController
    。如果您想创建自己的转换,您仍然可以使用
    Modal
    转换类型或
    Custom

    什么例外??可能是你使用seague的方式不对。检查标识符是否与storybard中指定的匹配。