为精简版和完整版处理不同的 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 文件的主要内容,如果未能解决你的问题,请参考以下文章