代码之家  ›  专栏  ›  技术社区  ›  ianckc

根据登录状态显示不同的iPhone视图

  •  0
  • ianckc  · 技术社区  · 16 年前

    如果我的用户没有登录,我想向他们显示登录视图;如果他们登录,我想显示主视图。

    在我的头文件中,我定义了一个变量来保存登录状态

    #define loggedIn 0
    

    我想我应该在initwitnibname方法中引用它,然后决定加载哪个nib。

    这是正确的方法吗?

    如果有的话,有人能帮我找出准确的密码吗?

    谢谢你的帮助

    2 回复  |  直到 16 年前
        1
  •  4
  •   TechZen    16 年前

    我认为你不明白如何使用define指令。

    所有这行…

    #define loggedIn 0
    

    …它是否会导致编译器在“loggedin”文本出现的代码中到处替换零?

    所以,如果你有代码说:

    if (loggedIn) {
        //... load one nib
    }else{
        // .... load another nib
    }
    

    编译器将其转换为:

    if (0) {
        //... load one nib
    }else{
        // .... load another nib
    } 
    

    在这种情况下,零将被计算为假,第二个NIB将始终被加载。

    这些类型的定义仅在开发中以这种方式使用,因此您可以强制应用进入特定状态。例如,如果您想重复测试第二个笔尖,您将把“loggedin”定义为零;如果您想测试第一个笔尖,您将把“loggedin”定义为1。

    您需要做的是进行某种测试,以查看用户是否登录。我不知道那个测试会是什么,因为它随您登录的内容而变化。然后根据测试结果,您将加载一个或另一个NIB。

    define指令与它没有任何关系。

        2
  •  1
  •   Emil    16 年前

    #define 不是你想要的,正如Techzen所解释的。 你应该使用 int 或A BOOL 这样做。

    例如:

    bool loggedin=否;

    - (void) login {
        // Check login details, if correct continue, if not, break.
        BOOL loggedIn = YES
    }
    

    然后您可以在另一个函数中使用它;

    if (loggedIn == YES) {
        NSLog(@"Logged in!");
        // Load nib
    }