【问题标题】:iOS full/lite version using multiple windows使用多个窗口的 iOS 完整/精简版
【发布时间】:2012-03-13 22:09:12
【问题描述】:

我的 Xcode 4.3 项目中有两个目标。每个目标都有自己的 X-info.plist 文件。我想要两个窗口(MainWindow.xib),一个用于完整应用程序,一个用于 Lite 版本。我为每个目标设置了Main Interface,还在 X-info.plist 中设置了Main nib file base name,但它不起作用。我错过了什么? 谢谢

【问题讨论】:

  • 我在下面发布了一个链接。如果它不能回答您的问题,请详细说明究竟是什么不起作用。

标签: iphone ios ipad xcode4.2 xcode4.3


【解决方案1】:

您可以轻松地为不同目标的 .xib 文件使用相同的名称。只要确保两个同名文件不是同一个目标的成员。它们必须放在 HD 上的不同目录和项目中的不同组中。

还有一个与 IB(图像资源等)和多个目标有关的已知错误:在Two targets with separate .xib (image resources with same names) 上查看更多信息

但此信息适用于 XCode 4.2.x,不确定它是否适用于 XCode 4.3

【讨论】:

  • 哼...我不认为我理解第一部分。你说我可以创建两个同名的文件(例如 RootViewController.xib)? XCode 不允许我这样做。
  • 应该,我一直都在用。您必须将它们保存在磁盘上的单独目录和项目中的单独组中。它们还必须属于不同的目标(一个用于完整应用,一个用于精简应用)。
  • 当您将文件添加到项目时,您可以定义它属于哪个目标(它可以属于所有目标,也可以只属于少数目标)。对于项目中已经存在的文件,您可以通过选择 view->utilities->file inspector 来编辑目标成员资格
  • Aaaa...是的...我忘了。我已经使用 xCode 有一段时间了 :)。
【解决方案2】:

您可以将预处理器宏添加到精简版LITE=1 的目标中。然后在您的代码中,当您想执行不同的操作时,您可以使用#ifdef,例如:

NSString *mainWindow;
#ifdef LITE
    mainWindow = @"MainWindow_Lite";
#else
    mainWindow = @"MainWindow_Full";
#endif
// Load nib with the name mainWindow.
// Or load ads in the lite version
// Or disable functionality in the lite version
//

如果您想避免这样做并希望对两个 nib 使用相同的名称,则必须将其中一个添加为 full 目标的成员,而将另一个添加为 lite 目标的成员。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多