你如何从一个故事板转到另一个故事板?不能在故事板中查看

时间:2012-12-15 09:23:05

标签: iphone objective-c ios xcode storyboard

您好我已经创建了两个故事板文件,我不知道如何在它们之间切换。为了在一个故事板内进行切换,我设置了标识符并使​​用以下代码:

[self performSegueWithIdentifier:@"identifier" sender:self];

此代码在用于切换故事板时会崩溃应用程序。

请帮忙

3 个答案:

答案 0 :(得分:10)

更新了iOS 9.0的答案

您可以使用故事板中的故事板引用将segue的目标设置为另一个故事板中的视图控制器。将故事板引用从对象库拖动到源故事板。使用目标故事板的名称和该故事板中的目标视图控制器的标识符对其进行配置。然后,您可以使用引用作为源情节提要中segue的目标。

有关详细信息,请参阅“Adding a Reference to Another Storyboard” in Storyboard Help

原始答案

查看UIStoryboard Class Reference

您可以使用+[UIStoryboard storyboardWithName:bundle:]按名称加载故事板。获得故事板对象后,可以通过发送instantiateInitialViewControllerinstantiateViewControllerWithIdentifier:来实例化其中一个视图控制器。然后,您可以使用该视图控制器执行任何操作:以模态方式呈现它,将其推送到导航控制器,将其添加到选项卡栏控制器等。

您无法在不同故事板中的场景之间创建segue,因此您无法使用performSegueWithIdentifier:sender:从一个故事板中的场景转换到另一个故事板中的场景。

答案 1 :(得分:7)

我找到了自己问题的答案!

以下是我的问题的代码:

-(void)viewDidLoad {

    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
        CGSize result = [[UIScreen mainScreen] bounds].size;

        if(result.height == 480){}
        if(result.height == 568){[self performSelector:@selector(inch4) withObject:nil afterDelay:0];}}}



-(void)inch4 {

    UIStoryboard *storyBoard;

    storyBoard = [UIStoryboard storyboardWithName:@"iPhone4inch" bundle:nil];
    UINavigationController *init4inchViewController = [storyBoard instantiateViewControllerWithIdentifier:@"MainMenu4inch"];
    [self presentModalViewController:init4inchViewController animated:NO];

}

这是切换故事板文件的代码:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"storyboard2" bundle:nil];
[self presentModalViewController:[storyboard instantiateViewControllerWithIdentifier:@"storyboard2initialviewcontroller"] animated:NO];

答案 2 :(得分:3)

在swift中,这很简单如下。 :)

    let sb = UIStoryboard(name: "DestinationStoryboard", bundle: nil)
    let vc = sb.instantiateInitialViewController() {
       present(vc, animated: true, completion: nil)
    }