2个故事板之间的过渡

Posted

技术标签:

【中文标题】2个故事板之间的过渡【英文标题】:Transition between 2 storyboards 【发布时间】:2011-11-29 12:24:18 【问题描述】:

我的应用中有 2 个故事板文件,我想在一个中的 ViewController 和另一个中的 ViewController 之间进行转换。我已经连接了一个 IBAction 以响应第一个 ViewController 上的按钮按下,它调用 AppDelegate 中的一个方法。我已验证此信号到达 AppDelegate 方法。

这是我在 AppDelegate 中的相关方法,但是没有发生转换。谁能告诉我为什么,或者有 2 个故事板是一个愚蠢的想法?

-(void) presentSecondViewController 

UIStoryboard* mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController* mainViewController = [mainStoryboard instantiateViewControllerWithIdentifier:@"main_viewcontroller"];

UIStoryboard* secondStoryboard = [UIStoryboard storyboardWithName:@"SecondStoryboard" bundle:nil];
UIViewController* secondViewController = [secondStoryboard instantiateViewControllerWithIdentifier:@"second_viewcontroller"];

[mainViewController presentViewController: secondViewController animated:YES completion: NULL];

【问题讨论】:

【参考方案1】:

您创建第一个故事板的初始视图控制器的第二个实例。该实例从未显示在屏幕上,因为它与已经显示的不同,因此可能不会显示您的第二个视图控制器。您需要已经显示视图控制器的实例。最好的方法是将您的实现更改为

-(void) presentSecondViewControllerFromViewController:(UIViewController *)sourceController

    UIStoryboard* secondStoryboard = [UIStoryboard storyboardWithName:@"SecondStoryboard" bundle:nil];
    UIViewController* secondViewController = [secondStoryboard instantiateViewControllerWithIdentifier:@"second_viewcontroller"];

    [sourceController presentViewController: secondViewController animated:YES completion: NULL];

并通过传递包含按钮的视图控制器来调用它。

【讨论】:

嗨,TriPhoenix,非常感谢,我很高兴地报告这个作品就像一个魅力。可以将单独的故事板及其相关代码放入其他项目并以这种方式重用,这非常棒。

以上是关于2个故事板之间的过渡的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用故事板转场的情况下添加动画链式过渡系统?

Xcode中的故事板

没有任何接触的故事板过渡(即 IBOutlet)

故事板和故事板包之间的区别?

“Unwind Segue”可以在通过故事板参考连接的两个故事板之间工作吗?

故事板中封面垂直过渡的对面