【问题标题】:Transition between 2 storyboards2个故事板之间的过渡
【发布时间】: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];

}

【问题讨论】:

    标签: iphone ios xcode uikit storyboard


    【解决方案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,非常感谢,我很高兴地报告这个作品就像一个魅力。可以将单独的故事板及其相关代码放入其他项目并以这种方式重用,这非常棒。
    猜你喜欢
    • 2014-11-13
    • 2012-09-01
    • 2014-10-25
    • 2016-10-30
    • 1970-01-01
    • 1970-01-01
    • 2014-10-17
    • 2016-01-26
    相关资源
    最近更新 更多