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

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

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

编辑:

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

【问题讨论】:

    标签: iphone objective-c xcode xib nib


    【解决方案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?
    • 你知道,我从来没有想过这个问题。除非你能找到答案,否则我只会创建两个不同的类并复制一些代码,无论你需要什么。精简版甚至可能有一些独特的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    相关资源
    最近更新 更多