在APP日常使用中常用的一个功能:用户第一次进入APP时自动进入登录注册页,提示用户注册登录,用户登录成功后才进入主页;再次进入APP时,不用再次登录就直接进到主页,就算杀掉该APP进程再次进入,依然可以进入主页。
苹果给IOS开发者提供了一个NSUserDefault类,用来持久化存储用户的登录信息,只有卸载APP才能抹掉这些登录信息,下面是实现的简单步骤:
1、在登陆页面对应的类loginViewController.h中定义两个TextField和一个Button,用来接受用户输入的用户名和密码,点击按钮登陆,如果登陆成功,就将用户的登陆信息存放在UserDefault中,然后跳入主页面
@interface LoginViewController ()
@property (nonatomic, strong) UITextField *username;
@property (nonatomic, strong) UITextField *password;
@end
2、在loginViewController.m中实现两个TextField和一个Button,UI方面的代码就不粘贴了,直接实现按钮的点击登录事件:登录请求成功后,走成功回调,回调下面实现将用户名和密码存入UserDefault中,页面跳转到主页面.下面数据请求的代码就不粘贴了,直接上存储UserDefault代码,跳转主页面.ps:#import "AppDelegate.h"
NSString *username = self.username.text;
NSString *password = self.password.text;
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:username forKey:@"username"];
[userDefaults setObject:password forKey:@"password"];
[userDefaults synchronize];
UITabBarController *tabBarVc = [[UITabBarController alloc] init];
UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:tabBarVc];
AppDelegate *appdelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
appdelegate.window.rootViewController = nc;
3、在AppDelegate.h中实现:用户第一次进入APP时自动进入登录注册页,提示用户注册登录,用户登录成功后才进入主页,再次进入APP时,不用再次登录就直接进到主页了
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//初始化窗体
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.backgroundColor = [UIColor whiteColor];
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
if (![userDefaults objectForKey:@"username"]){
//进入主页
} else {
LoginViewController *loginVc = [[LoginViewController alloc] init];
[self.navController pushViewController:loginVc animated:YES];
}
[self.window makeKeyWindow];
return YES;
}
4、退出登录
- (void)_logout{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults removeObjectForKey:@"username"];
[userDefaults removeObjectForKey:@"password"];
//跳转登陆页
LoginViewController *loginVc = [[LoginViewController alloc] init];
[self.navController pushViewController:loginVc animated:YES];
}