两个故事板之间的过渡

时间:2011-11-29 12:24:18

标签: iphone ios xcode uikit storyboard

我的应用程序中有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 个答案:

答案 0 :(得分:8)

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

-(void) presentSecondViewControllerFromViewController:(UIViewController *)sourceController
{
    UIStoryboard* secondStoryboard = [UIStoryboard storyboardWithName:@"SecondStoryboard" bundle:nil];
    UIViewController* secondViewController = [secondStoryboard instantiateViewControllerWithIdentifier:@"second_viewcontroller"];

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

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