你可以使用适用于iPhone的MainWindow.xib和适用于iPad的Storyboard制作通用应用吗?

时间:2012-10-31 23:54:23

标签: iphone ipad xib uistoryboard universal

我很久以前制作了一款iPhone应用程序,现在我正在考虑将其作为通用应用程序,但我想知道是否可以使用Storyboard来制作iPad版本,所以对于iPhone来说它会加载一个MainWindow.xib和对于iPad,它将加载MainStoryboard文件。这可能吗?

3 个答案:

答案 0 :(得分:3)

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

在iPhone故事板中,只需将mainwindow.xib拖到rootViewController的中间,并确保它全屏显示。

然后,您可以使用iPad故事板做任何您想做的事。

确保您的两个故事板文件在项目摘要中正确链接!

答案 1 :(得分:3)

Gazzini是对的并且在我做研究时首先得到他的答案,以确认这是真的&在我输入我自己的答案之前相对简单。所以给他+1。

但您不需要两个单独的故事板。您只需要一个架构的一个故事板和您已经支持的架构的XIB文件。

这是一个屏幕截图,可能有助于向您展示我在自己的测试项目中所做的事情:

Yes It Is Possible

只需编辑应用程序的plist,即可为已有XIB文件的特定体系结构使用“nib”文件,然后为新体系结构指定故事板。

答案 2 :(得分:0)

如果你没有设置主界面(Info.plist中的NSMainNibFile)或主要故事板,那么在iPad上使用故事板和在iPhone上使用nib会更简单( Info.plist中的NSMainStoryboardFile

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

在您的app delegate application:didFinishLaunchingWithOptions:中,您可以检查界面习语。

如果界面成语是iPhone,请使用MainWindow加载-[NSBundle loadNibNamed:owner:options:]

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