我尝试使用从一个ViewController到另一个ViewController的故事板制作一个segue,但它引发了异常。
segue只适用于NavigationControllers吗?当我以这种方式尝试时它起作用了。
答案 0 :(得分:0)
如果您使用从UINavigationController
到ViewControllerA
的故事板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
。
以下是如何以编程方式执行此操作。
在Interface Builder中设置Segue
标识符。
调用[self performSegueWithIdentifier:@"MySegueIdentifier" sender:nil];
以响应某个事件,即按钮的TouchUpInside
来执行该事件。
这篇文章有更多信息: Segue implementation via code
注意:如果您未使用NavigationController
,则无法使用推送Segue
转换,因为这需要NavigationController
。如果您想要进行自己的转换,仍然可以使用Modal
转换类型或Custom
。