为精简版和完整版处理不同的 xib 文件

Posted

技术标签:

【中文标题】为精简版和完整版处理不同的 xib 文件【英文标题】:Handling different xib files for a lite and full version 【发布时间】:2011-08-01 13:41:06 【问题描述】:

我有一堆我在我的应用程序的完整版本中使用的 xib 文件。在精简版中,我希望能够加载一些功能较少的 xib,从而使其成为精简版。我所有的 viewController 都连接在 IB 中,并且目前被两个目标引用。

除了简单地禁用它之外,隐藏功能的最佳方法是什么?我认为拥有一个完全不同的 xib 文件是最简单的,我错了吗?

编辑:

为了澄清,我试图弄清楚如何根据版本为视图控制器加载不同的笔尖。我相信它与 initWithNib 有关。

【问题讨论】:

【参考方案1】:

使用目标,您可以排除/包含每个目标的文件。

为 lite 创建一个目标,其中不包含完整应用程序将要使用的某些部分,例如加载功能比完整版本少的 NIB。

您甚至可以对代码文件 (.m) 和 NIB 使用相同的名称,并通过目标属性包含/排除。

这只有在您的应用商店中有精简版和完整版时才有效。

如果您想要应用内购买,那么您需要按照@Jack Humphries 的建议进行操作。

【讨论】:

我打算有一个单独的精简版和完整的应用程序,是的。 那么我会选择 Target,您可以为不同的 NIB 和 .m 文件使用相同的文件名。并通过目标属性包含/排除。 完美!甚至没有考虑到这一点。将其添加到您的答案中,我会给您支票。【参考方案2】:

是的,你是对的,在我看来,拥有不同的 XIB 会更容易。那么,完整版和精简版是否与应用内购买在同一个应用中?我会有一个通用主页,然后使用 NSUserDefaults 链接到不同的页面。例如,这里是一个按钮的代码:

-(IBAction)gotogame 

if ([[NSUserDefaults standardUserDefaults] boolForKey"@Purchased"] == YES) 
    //go to the entire game XIB

else 
    //go to the lite game

下面是设置 NSUserDefaults 的方法:

[[NSUserDefaults standardUserDefaults] setBool:YES forKey"@Purchased"];

此外,如果您希望所有内容都在同一个视图中,请使用 NSUserDefaults,如果 Purchased 键等于 yes,则执行以下操作:

[litePicture setHidden:YES];
[fullPicture setHidden:NO];

反之亦然。如果您有任何问题,请告诉我!

【讨论】:

这似乎是一个很好的方法,但我实际上正在寻找一种“去 xib”的方法。假设我有一个视图控制器 xyz,有没有办法让它加载 xib xyz 或 xyz lite? 你知道,我从来没有想过这个问题。除非你能找到答案,否则我只会创建两个不同的类并复制一些代码,无论你需要什么。精简版甚至可能有一些独特的东西。

以上是关于为精简版和完整版处理不同的 xib 文件的主要内容,如果未能解决你的问题,请参考以下文章

从精简版到完整版,适用于 APP 旧/当前用户的完整版,无需应用内购买

共享数据文件的完整版和精简版应用程序

精简版WINDOWS7和完全版有啥区别

创建一个精简版,使用多个目标,你如何避免覆盖完整版?

office2016官方下载免费完整版中文版下载

指纹验证完整版处理小结