如果用户未登录,我想显示登录视图,如果是,则显示主视图。
在我的头文件中,我定义了一个变量来保存登录状态
#define loggedIn 0
我想我应该在initWithNibName方法中引用它,然后决定加载哪个nib。
这是正确的做法吗?
如果是这样,有人可以帮我解决确切的代码吗?
感谢您的帮助
答案 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)
#define
不是您想要的。
您应该使用int
或BOOL
来执行此操作。
例如:
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
}