0

例如,我有 2 个 Storybard。在第一个故事板中,我有一个带有按钮的视图,当您按下按钮时,应该会出现第二个故事板。

我怎样才能做到这一点?

4

3 回答 3

0

查看故事板类的文档

您可以使用创建故事板

UIStoryBoard *storyboard = [UIStoryboard storyboardWithName:@"secondStoryboard" bundle:nil];

并从中获取视图控制器

UIViewController *initialViewController = [storyboard instantiateInitialViewController];

或者

UIViewController *otherViewcontroller = [storyboard instantiateViewControllerWithIdentifier:@"otherController"];

一旦你有了视图控制器,我猜你可以将它们推送到导航控制器上。

但是,我不知道在同一个视图层次结构中使用两个故事板对象会发生什么——这可能很好,但你永远不知道 :)

于 2012-09-07T14:31:12.790 回答
0

尽管您的问题有点令人困惑,但我想我知道您要做什么。

您想使用两个故事板。UIStoryboard有一个方法来检索具有给定名称的任何故事板的实例。所以首先,在 Xcode 中为你的故事板和视图控制器设置一个名称,然后加载它们,然后从任何视图控制器中加载它们:

UIStoryboard *anotherStoryboard = [UIStoryBoard storyboardWithName:@"SomeStoryboardName" bundle:nil];

之后,从任何情节提要中实例化所需的 UIViewController:

UIViewController *anotherViewController = [anotherStoryboard instantiateViewControllerWithIdentifier:@"SomeViewControllerName"];

然后,您可以将其推送到导航堆栈中,例如:

[self.navigationController pushViewController:anotherViewController animated:YES];  
于 2012-09-07T14:32:18.713 回答
0

修改为通用这是我在我的应用程序中执行此操作的方式...

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 行以适应您想要的演示风格。

于 2012-09-07T14:39:16.587 回答