12

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

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

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

请有人把我引向正确的方向,记住我没有使用任何 xibs 吗?

4

1 回答 1

20

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

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

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

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

最后,你需要弱链接 UIKit。有关如何做到这一点,请参阅我的答案here如果您使用 iOS 4.2 或更高版本的 SDK 构建,则不再需要框架的弱链接。只需在运行时通过查看它们的+class方法是否返回来检查是否存在适当的类nil

于 2010-05-09T13:57:22.590 回答