你能用iPhone的MainWindow.xib和iPad的Storyboard制作一个通用应用程序吗?

你能用iPhone的MainWindow.xib和iPad的Storyboard制作一个通用应用程序吗?,iphone,ipad,xib,uistoryboard,universal,Iphone,Ipad,Xib,Uistoryboard,Universal,很久以前我做过一个iPhone应用程序,现在我正在考虑让它成为一个通用的应用程序,但是我想知道我是否可以使用故事板来制作iPad版本,所以对于iPhone,它将加载一个MainWindow.xib,对于iPad,它将加载一个MainStoryboard文件。这可能吗?是的,但实际上你必须制作两个独立的故事板(一个用于iPhone,一个用于iPad) 在iPhone情节提要中,只需将mainwindow.xib拖到rootViewController的中间,并确保它全屏显示 然后,你可以用你的iP

很久以前我做过一个iPhone应用程序,现在我正在考虑让它成为一个通用的应用程序,但是我想知道我是否可以使用故事板来制作iPad版本,所以对于iPhone,它将加载一个MainWindow.xib,对于iPad,它将加载一个MainStoryboard文件。这可能吗?

是的,但实际上你必须制作两个独立的故事板(一个用于iPhone,一个用于iPad)

在iPhone情节提要中,只需将mainwindow.xib拖到rootViewController的中间,并确保它全屏显示

然后,你可以用你的iPad故事板做任何你想做的事情


不过,请确保在项目摘要中正确链接了两个故事板文件

如果不在Info.plist中设置主界面(
NSMainNibFile
)或主情节提要(
NSMainStoryboardFile
),那么在iPad上使用情节提要和在iPhone上使用nibs会更简单

相反,将你的应用程序委托移出
main window.xib
,让
UIApplicationMain
实例化它,将其类名作为第四个参数传递给
UIApplicationMain
中的
UIApplicationMain
。使应用程序委派
MainWindow.xib的文件所有者

在应用程序代理的
应用程序:didfishlaunchingwithoptions:
中,您可以检查接口习惯用法

如果界面习惯用法是iPhone,请使用
-[NSBundle loadNibNamed:owner:options://加载
main窗口


如果界面习惯用法是iPad,请创建窗口,使用
+[UIStoryboard storyboard with name:bundle:][code>加载
MainStoryboard
,使用
-[UIStoryboard instantiateInitialViewController]
实例化其初始视图控制器,并将该视图控制器设置为窗口的根视图控制器。

Gazzini是正确的,他首先得到了答案,当时我正在进行研究,以确认这是正确的&在我输入自己的答案之前,这相对简单。所以对他来说+1

你不需要两个独立的故事板。对于一个体系结构,您只需要一个故事板,对于已经支持的体系结构,您只需要一个XIB文件

下面是一个屏幕截图,可以帮助您了解我在自己的测试项目中所做的工作:


只需编辑应用程序的plist,将“nib”文件用于您已经拥有XIB文件的特定体系结构,然后为新体系结构指定情节提要。

我认为,除非应用程序非常复杂,否则最好只制作所有情节提要。这样所有的转换都是一样的,你的代码也会更干净。就是这样,这个应用程序相当复杂,如果没有故事板,我不认为我会在iPad上重新做一遍,但在我匆忙做任何事情之前,我需要知道我是否能够做到。听起来不错,我会尝试一下,看看会发生什么,非常感谢。也非常感谢您的回答,但做了一些研究后,我发现为了向应用商店提交应用程序,在我的info.plist中,我只能设置NSMainNIBFile或UIMainstryBoardFile。我在Information Property List Key Reference Guide(信息属性列表键参考指南)中找到了这一点,其中写道“NSMainNIBFile:此键与'UIMainstryBoardFile'(第77页)键互斥。您应该在Info.plist文件中包含一个键,但不能同时包含两个键。”