将仅限 iPhone 的应用程序升级到 Universal 不会创建 -ipad 类

Posted

技术标签:

【中文标题】将仅限 iPhone 的应用程序升级到 Universal 不会创建 -ipad 类【英文标题】:Upgrade iPhone-Only app to Universal doesn't create -ipad classes 【发布时间】:2014-04-22 20:20:22 【问题描述】:

我想将我的 iPhone 专用应用升级到 Universal。因此,从目标的常规窗口中,我从 iPhone 切换到 Universal 并选择“复制”以生成基于 iphone 的 iPad 故事板。现在创建了一个名为 iPad 的新文件夹,但它是空的,我找不到所有的 -ipad 类。我想要的是使用 -ipad 后缀和 iPad 专用 Storyboad 复制所有原始(iPhone)类。从这些类开始,从 iPhone 逻辑开始,我想逐步创建一个新的 ipad 版本。在目标的一般 windows ipad 主界面是 main_iphone-ipad 但在项目中不存在,在文件夹中也不存在。

【问题讨论】:

【参考方案1】:

这不是 Xcode 的问题,这就是它应该做的。

如果您愿意,当然可以为 iPad 版本手动复制整个项目,但我想不出您真正想要这样做的情况。

大多数时候,您只想在 iPad 和 iPhone 版本之间更改视图层。您可以根据您想要的设备加载不同的 Nib,甚至可以加载完全不同的视图控制器,执行简单的逻辑,例如

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) 
     viewController = [[MyViewController alloc] initWithNibName:@"ipadNIB" bundle:nil];
 else 
    viewController = [[MyViewController alloc] initWithNibName:@"iphoneNIB" bundle:nil];

** 开始编辑 **

要为 iPhone/iPad 设置不同的故事板,您只需创建另一个故事板并将其命名为“myprojectname_ipad.storyboard”,然后在项目的 Info.plist 中添加一个名为“主故事板文件基本名称(iPad )”,值为“myprojectname_ipad”

** 结束编辑 **

【讨论】:

如果我从 iPad 切换到 Universal 时选择“复制”,则不会创建 ipad Storyboard。我需要复制 iPhone 版本,因为有些东西不适合 ipad 屏幕,所以我需要不同大小的元素。在开始创建项目时,我选择了“通用”,但后来我切换到 iPhone,我想有些元素不在模拟器中的正确位置,即使应用程序仅适用于 iPhone,我也会看到 iPad...现在我要创建通用版本,我无法获得 ipad 专用的故事板。 我用如何添加 iPad 专用故事板编辑了我的答案 好的,我认为我的所有课程都可以自动复制,ipad 故事板也可以(基于 iphone)。只需点击“复制”按钮 作为一般规则,您希望尽可能多地重用代码。复制整个项目会以某种方式拆分代码库,这将使其(很可能)在未来非常难以维护和使用。这就是为什么它不是执行此操作的默认选项,您可以再次手动执行此操作,但我认为您以后会后悔的。如果您遵循 MVC 模式,请尝试重新使用您的 (M) 模型和 (C) 控制器,然后为每个设备使用不同的 (V) 视图。这种方式可以最大限度地重复使用代码,并且您可以为每台设备自定义应用的外观。

以上是关于将仅限 iPhone 的应用程序升级到 Universal 不会创建 -ipad 类的主要内容,如果未能解决你的问题,请参考以下文章

检测到堆损坏 - 仅限 iPhone 5S

将仅 JS 的 react-native 库升级到 RN 0.60

Nativescript Apple 应用商店仅限 iPhone

制作一个仅限 iPhone 的 Qt 应用程序

为啥在ipad上下载 仅限iphone的软件 在桌面不显示软件的图标?有啥办法解决么?

Xcode 中的“需要全屏”选项对仅限 iPhone 的应用程序有啥影响?