看起来你有了一个好的开始。由于您有标签栏设计,因此您必须选择如何显示登录页面以及何时显示。
您必须在显示标签栏之前显示它,或者将逻辑放入您的第一个视图控制器中以启动登录过程。还有其他方法,但它们变得更加复杂,我现在想给你一些基本的选择。
这是我推荐的一般概念。
a)在某处创建一个持久存储变量以确定用户是否登录。
b) 在 View will load 附加到标签栏的第一个视图控制器的方法中添加对此标志的检查。
c) 直接从视图控制器呈现一个模式登录页面。如果他们登录,很好地关闭它,如果没有,他们就会卡在模式页面上。
所以,这里基本上是如何做到这一点的:
为了解释的目的,我将调用你的第一个视图控制器 - 你的标签栏控制器上的第一个标签 - fviewController - 好吗?
在 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];
}
}
还有几点看起来你正在使用故事板和segues。在这种情况下,您将执行以下操作:
- 为您的登录页面创建一个新的视图控制器
- 控制从标签栏中的第一个视图控制器拖动一个segue连接到它
- 将 segue 标识为“模态”
- 为登录视图控制器创建一个新的视图控制器类
- 展示您的视图并管理您的身份验证
- 如果用户已登录,您需要将其存储回 NSUserDefaults 注意:如果您有多个用户或其他方案,您可能需要修改我在示例中显示的单个值 go track status for current user。另外:如果您有注销代码,则需要正确设置标志。另外:如果用户要经常登录和注销,那么会出现使用视图而不是视图加载。
翻转状态:
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 ... 在 segue 发生之前初始化变量。如果您正在做一些教程,您可能已经阅读过它。
嗯......希望有帮助。这是一种非常基本的方法。如果你得到这个工作,你可以继续为它添加更多的安全性和功能。
祝你好运。