【问题标题】:How to call different Storyboards in iOS?如何在 iOS 中调用不同的 Storyboard?
【发布时间】:2016-09-20 12:30:08
【问题描述】:

我正在使用两个故事板,第一个用于 iphone Main.storyboard,第二个是 Main_iPad.storyboard,我想分别为 iPad 和 iPhone 调用我正在使用此代码:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)  {
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main_iPad" bundle:nil];
    EABaseRootVC *loginController = [storyboard instantiateViewControllerWithIdentifier:@"root2"];
    UINavigationController *navController=[[UINavigationController alloc]initWithRootViewController:loginController];
    self.window.rootViewController=navController;
}
else
{

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    EABaseRootVC *loginController = [storyboard instantiateViewControllerWithIdentifier:@"root"];
    UINavigationController *navController=[[UINavigationController alloc]initWithRootViewController:loginController];
    self.window.rootViewController=navController;
}

但它总是显示 Main.storyboard 的 iPhone 资产。

我已经关注这个Different storyboards for iPhone and iPad in xcode 6

如果您有任何其他想法,请建议我。 我做错了什么?

【问题讨论】:

    标签: ios objective-c storyboard


    【解决方案1】:

    要具体识别 Apple 设备是 iPhone 还是 iPad,请使用以下代码:

    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){
        // code for iPad
    }else{
        // code for iPhone
    }
    

    并且必须在项目的.plist 文件中添加这两个键。

    Main storyboard file base name (iPad)
    Main storyboard file base name (iPhone)
    

    看图:

    【讨论】:

    • 我已经在我的 info.plist 文件中添加了这些东西,但没有工作。
    • 可能您已经更新了项目中的另一个 plist 文件,请仔细检查它..此代码工作正常
    • 是的,我知道这段代码可以正常工作,但最后不行,让我检查一下。
    • 您需要确保您的项目配置为构建一个“通用”应用程序,而不仅仅是 iPhone。
    猜你喜欢
    • 2014-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 2018-05-09
    • 2013-03-20
    • 1970-01-01
    • 2013-10-30
    相关资源
    最近更新 更多