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

时间:2010-05-02 19:41:47

标签: iphone objective-c

如果用户未登录,我想显示登录视图,如果是,则显示主视图。

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

#define loggedIn 0

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

这是正确的做法吗?

如果是这样,有人可以帮我解决确切的代码吗?

感谢您的帮助

2 个答案:

答案 0 :(得分:4)

我认为您不了解如何使用define指令。

这一切......

#define loggedIn 0

...它是否会导致编译器在代码中的任何地方替换零“文本”loggedIn“出现。

所以,如果你有代码说:

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

编译器将其转换为:

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

在这种情况下,零将评估为false,并且将始终加载第二个笔尖。

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

您需要做的是进行某种测试以查看用户是否已登录。我不知道该测试会是什么,因为它会根据您的登录情况而有所不同。然后根据该测试的结果,您将加载一个笔尖或另一个笔尖。

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

答案 1 :(得分:1)

正如TechZen所解释的那样,

#define不是您想要的。 您应该使用intBOOL来执行此操作。

例如:

BOOL loggedIn = NO;

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

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

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