【问题标题】:How to develop an universal app for iPhone + iPad without xib files?如何在没有 xib 文件的情况下为 iPhone + iPad 开发通用应用程序?
【发布时间】:2011-06-20 15:18:54
【问题描述】:

我想进行通用构建,但我完全以编程方式创建 UI。

1) 我可以将不同的视图控制器类添加到特定于设备的资源目录吗?还是必须在两个设备上共享课程?

2)如果我必须在两个设备上共享类,根据 iPhone 还是 iPad 设备有条件地加载 classA 或 classB 的最安全方法是什么?

【问题讨论】:

  • 将你的 UI 移到 xibs 中。以编程方式管理差异似乎是一项巨大的开销,并且由于您已经面临大量支持 iPad 的工作,您不妨接受打击并将 UI 定义移动到更易于管理的地方。添加为评论,因为它没有回答您的具体问题。
  • +1 提供我们可能面临的问题,如果我们忽略 xibs 的力量。

标签: iphone ipad


【解决方案1】:

1) 你不能在两个地方添加视图控制器类,因为在编译时会在两个地方找到相同的符号(即类名)并且应用程序不会链接。

2) 我会说最安全的方法是使用不同的 .xib ,但是如果您想仅通过代码使其工作,您可以创建一个仅执行正确类加载的单例视图管理器。然后,在其余代码中,您需要做的就是: [MyViewManager sharedInstance] instantiateViewController:kMyDetailsView] 并根据需要显示视图。

要确定当前设备,您可以使用如下语句:#define iPad [UIDevice currentDevice].userInterfaceIdiom==UIUserInterfaceIdiomPad。它可以包含在您的前缀文件中,使其可用于整个项目。

【讨论】:

    【解决方案2】:

    在每个视图控制器上,您都可以进行设备检查以查看哪个设备正在运行您的应用程序并相应地构建您的 UI。即,仅使用一组视图控制器并在 *.m 文件中的 if-else 循环中相应地构建您的 UI。

    请参阅此帖子进行设备检查: Determine device (iPhone, iPod Touch) with iPhone SDK

    PS:在您的 if-else 中,将 if(iPad){} else{} 检查作为最佳做法,因为通常情况下,人们在进行 if(iPhone){ 时会忘记检查 iPod Touch }其他{}

    【讨论】:

    • 顺便说一句,这是经过试验和测试的,它可以工作,因为我在应用商店中有一个使用这种技术的应用 :)
    猜你喜欢
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多