如何制作以编程方式使用UISplitViewController和UINavigationController的通用iPhone/iPad应用程序?

Ara*_*nia 12 iphone cocoa-touch ipad uisplitviewcontroller

我无法在任何地方找到一个好的答案.我正在为我的iPhone应用程序使用UINavigationController,所有内容都是以编程方式生成的,Interface Builder中没有任何内容.我正在尝试使用UISplitViewController和我现有的UINavigationController将我的应用程序移植到iPad,但我不确定我的程序逻辑应该分离iPhone或iPad的视图控制器.

我是否将主文件设置为使用其他应用程序委托,还是使用相同的应用程序委托并在其中有条件地设置用户界面?

除此之外,每当我尝试在模拟器上编译我的应用程序时,它都无法识别UISplitViewController甚至是我检查类是否存在的条件.

可以请有人把我放在正确的方向,记住我没有使用任何xibs?

Bra*_*son 20

如果您想查看使用拆分视图的完全编程的iPhone/iPad界面的示例,您可以下载我的应用程序Molecules的源代码.

在该应用程序中,我使用一个应用程序委托,但我根据存在的用户界面习惯用法(iPad或iPhone)设置界面的方式不同.对于iPhone,我实例化一个根视图控制器,它管理该设备的适当接口.对于iPad,我首先创建一个UISplitViewController并将其附加到根窗口,然后创建我的iPad特定的根视图控制器并将其作为拆分视图控制器的详细视图(使用我用于项目选择的导航控制器)拆分视图的左侧控制器).

同样,我建议查看该应用程序项目,看看我是如何以编程方式设置它的.该代码在BSD许可下可用,因此您可以根据需要将其复制并粘贴到您自己的应用程序中.

对于您获得的编译错误,您需要使用"升级当前iPad目标"菜单选项将应用程序目标迁移为通用应用程序.完成后,将构建SDK设置为3.2.转到应用程序的构建设置,并将其部署目标设置为您希望通过应用程序支持的最早的操作系统(3.0是您可以使用的最远的后台).

最后,您需要弱连接UIKit.如何做到这一点,请在此处查看我的答案.如果您使用iOS 4.2或更高版本的SDK构建,则不再需要弱链接框架.只需在运行时通过查看其+class方法是否返回来检查是否存在相应的类nil.