它看起来像你是一个良好的开端。既然你有一个tabbar设计,你必须做出如何呈现登录页面的选择,以及何时你会这样做。
您必须在显示标签栏之前显示它,或者将逻辑放入第一个视图控制器以启动登录过程。还有其他方法,但它们变得更加复杂,我现在想给你基本的选择。
这是我推荐的一般概念。
a)在某处创建持久存储变量以确定用户是否登录。
b)在视图将加载方法的第一个视图控制器附加到您的TabBar的检查此标志。
c)直接从视图控制器呈现模态登录页面。如果他们登录,很好的解雇它,如果不是,他们被困在模态页面上。
因此,这里基本上是如何做到这一点:
解释的目的,我要打电话给你的第一个视图控制器 - fviewController - - 第一个标签您的TabBar控制器上好吗?
在fviewController.m
-(void)viewDidLoad {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([[defaults objectForKey:@"loggedIn"]boolValue]) {
NSLog(@"user is logged in - do nothing");
}
else {
NSLog(@"User is not logged in");
[self performSegueWithIdentifier:@"LoginPage" sender:self];
}
}
一对夫妇更多的积分 它看起来像你使用故事板和塞格斯。在这种情况下,你会做以下几点:
- 您的登录页面创建一个新的视图控制器
- 调速拖动你的TabBar
- 一个SEGUE连接到它的第一个视图控制器识别SEGUE为“莫代尔”
- 箱
- 为登录视图控制器一个新的视图控制器类出示您查看和管理您的身份验证
- 如果用户登录,您需要存储回NSUserDefaults的 注意:如果您有多个用户或其他方案,则可能需要修改我在当前用户的示例go track状态中显示给您的单个值。 另外:如果您有注销代码,则需要正确设置标志。 另外:如果用户要频繁登录和注销,那么使用视图将会出现而不是视图加载。
要翻转状态:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setValue:[NSNumber numberWithBool:YES] forKey:@"loggedIn"]; //in
[defaults setValue:[NSNumber numberWithBool:NO] forKey:@"loggedIn"]; //out
do this in your login controller
要关闭该模式的看法。从技术上讲,你应该使用委托回调做到这一点,但如果你试图让事情变得简单,这应该是确定
[self dismissViewControllerAnimated:YES completion:^{
}];
所以,你的逻辑是这样的 - 他们没有登录?是的,然后设置为登录状态,然后解雇。如果他们不想登录,不要做任何事情。他们被卡住了。最后,如果你需要设置登录控制器,你可以使用下面的方法:prepareForSegue ...来在变化发生之前初始化变量。如果你正在做一些教程,你可能已经阅读过它。
呃......希望有帮助。这是一个非常基本的方法。如果你得到这个工作,你可以继续添加更多的安全性和功能。
祝你好运。
我需要一些清晰度,你有1个标签栏与2个图标和一个公共和另一个非公开这是保护身份验证,对不对? – 2013-05-03 04:01:44
@KumarKl号码现在只有一个标签栏有两个标签。登录屏幕只有一个导航栏来放置登录按钮。 – aVC 2013-05-03 04:03:04
K我知道了..等我会放些东西 – 2013-05-03 04:04:33