我的应用程序中有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];
}
答案 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];
}
并通过传递包含按钮的视图控制器来调用它。