segue只能用于导航控制器吗?

时间:2013-10-11 15:20:27

标签: ios uinavigationcontroller storyboard

我尝试使用从一个ViewController到另一个ViewController的故事板制作一个segue,但它引发了异常。

segue只适用于NavigationControllers吗?当我以这种方式尝试时它起作用了。

2 个答案:

答案 0 :(得分:0)

如果您使用从UINavigationControllerViewControllerA的故事板ViewControllerB嵌入了ViewControllers:

- (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;
    }
}

答案 1 :(得分:0)

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

以下是如何以编程方式执行此操作。

  1. 在Interface Builder中设置Segue标识符。

  2. 调用[self performSegueWithIdentifier:@"MySegueIdentifier" sender:nil];以响应某个事件,即按钮的TouchUpInside来执行该事件。

  3.   

    这篇文章有更多信息:   Segue implementation via code

    注意:如果您未使用NavigationController,则无法使用推送Segue转换,因为这需要NavigationController。如果您想要进行自己的转换,仍然可以使用Modal转换类型或Custom