两个故事板之间的转换



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

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

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

}

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

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

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

最新更新