例如,我有 2 个 Storybard。在第一个故事板中,我有一个带有按钮的视图,当您按下按钮时,应该会出现第二个故事板。
我怎样才能做到这一点?
查看故事板类的文档
您可以使用创建故事板
UIStoryBoard *storyboard = [UIStoryboard storyboardWithName:@"secondStoryboard" bundle:nil];
并从中获取视图控制器
UIViewController *initialViewController = [storyboard instantiateInitialViewController];
或者
UIViewController *otherViewcontroller = [storyboard instantiateViewControllerWithIdentifier:@"otherController"];
一旦你有了视图控制器,我猜你可以将它们推送到导航控制器上。
但是,我不知道在同一个视图层次结构中使用两个故事板对象会发生什么——这可能很好,但你永远不知道 :)
尽管您的问题有点令人困惑,但我想我知道您要做什么。
您想使用两个故事板。UIStoryboard有一个方法来检索具有给定名称的任何故事板的实例。所以首先,在 Xcode 中为你的故事板和视图控制器设置一个名称,然后加载它们,然后从任何视图控制器中加载它们:
UIStoryboard *anotherStoryboard = [UIStoryBoard storyboardWithName:@"SomeStoryboardName" bundle:nil];
之后,从任何情节提要中实例化所需的 UIViewController:
UIViewController *anotherViewController = [anotherStoryboard instantiateViewControllerWithIdentifier:@"SomeViewControllerName"];
然后,您可以将其推送到导航堆栈中,例如:
[self.navigationController pushViewController:anotherViewController animated:YES];
修改为通用这是我在我的应用程序中执行此操作的方式...
UIStoryboard *alternateStoryboard;
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
alternateStoryboard = [UIStoryboard storyboardWithName:@"Alternate_iPad" bundle:nil];
} else {
alternateStoryboard = [UIStoryboard storyboardWithName:@"Alternate_iPhone" bundle:nil];
}
AlternateController *altController = [alternateStoryboard instantiateInitialViewController];
[altController setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
[self presentModalViewController:altController animated:YES];
如果您的应用程序只有 iPhone 或 iPad 可以简化为...
UIStoryboard *alternateStoryboard = [UIStoryboard storyboardWithName:@"Alternate" bundle:nil];
AlternateController *altController = [alternateStoryboard instantiateInitialViewController];
[altController setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
[self presentModalViewController:altController animated:YES];
您可能需要更改最后 2 行以适应您想要的演示风格。