如何在 iOS 中调用不同的 Storyboard?
Posted
技术标签:
【中文标题】如何在 iOS 中调用不同的 Storyboard?【英文标题】:How to call different Storyboards in iOS? 【发布时间】: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
如果您有任何其他想法,请建议我。 我做错了什么?
【问题讨论】:
【参考方案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。以上是关于如何在 iOS 中调用不同的 Storyboard?的主要内容,如果未能解决你的问题,请参考以下文章
从 Xamarin.iOS 绑定库中引用 Storyboard
iOS 9 Safe Area Top 约束的 xib 和 storyboard 不同
使用 Storyboard id iOS 以编程方式调用视图控制器
IOS:程序化 rootViewController 以不同的方式呈现视图到 Storyboard 'isInitialView'