我们在使用APP时常用的一个功能:用户第一次进入APP时自动进入登录注册页,提示用户注册登录,用户登录成功后才进入主页,再次进入APP时,不用再次登录就直接进到主页了,就算杀掉该APP进程再次进入,依然进入主页.
苹果给我们iOS开发者提供了一个NSUserDefault类,用来持久化存储用户的登录信息,只有卸载APP才能抹掉这些登陆信息.
1.在登陆页面对应的类loginViewController.h中定义两个TextField和一个Button,用来接受用户输入的用户名和密码,点击按钮登陆,如果登陆成功,就将用户的登陆信息存放在UserDefault中,然后跳入主页面
2.在loginViewController.m中实现两个TextField和一个Button,UI方面的代码就不粘贴了,直接实现按钮的点击登录事件:登录请求成功后,走成功回调,回调下面实现将用户名和密码存入UserDefault中,页面跳转到主页面.下面数据请求的代码就不粘贴了,直接上存储UserDefault代码,跳转主页面.ps:#import "AppDelegate.h"
![](https://img2018.cnblogs.com/blog/749924/201903/749924-20190320140545304-1227973619.png)
3.在AppDelegate.h中实现:用户第一次进入APP时自动进入登录注册页,提示用户注册登录,用户登录成功后才进入主页,再次进入APP时,不用再次登录就直接进到主页了.
![](https://img2018.cnblogs.com/blog/749924/201903/749924-20190320140525308-1730131470.png)
补充说明:如果你的登录页是自定义的导航栏,跳转登录页做此修改
![](https://img2018.cnblogs.com/blog/749924/201903/749924-20190320140637651-92102154.png)
4.执行完登录操作后,给“username”字段赋一个非空值,这样下次到AppDelegate时,判断之后就会进入到主页了
5.最后,该如何移除自动登录这种状态呢,或者切换用户登录.在你的退出登录按钮事件中实现.
6.好了,保存登录状态,移除等操作的都已经实现了.
//用户登录信息key #define kUserInfoKey @"userInfoKey" //用户登录信息密码 //#define kUserPwdKey @"userPwdKey" 1、 [MBProgressHUD showSuccess:@"登录成功" toView:self.view]; [[NSUserDefaults standardUserDefaults] setObject:self.phoneNumTF.text forKey:kUserInfoKey];//保存登录用户名 // [[NSUserDefaults standardUserDefaults] setObject:self.pwdTF.text forKey:kUserPwdKey];//保存密码 2、 [MBProgressHUD showSuccess:@"注册成功" toView:self.view]; [[NSUserDefaults standardUserDefaults] setObject:self.phoneTF.text forKey:kUserInfoKey]; // [[NSUserDefaults standardUserDefaults] setObject:self.pwdTF.text forKey:kUserPwdKey]; 3、 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { SDLoginViewController *login = [[SDLoginViewController alloc] init]; SDNavigationController *nav = [[SDNavigationController alloc] initWithRootViewController:login]; self.window.rootViewController = nav; NSString *userPhone = [[NSUserDefaults standardUserDefaults] objectForKey:kUserInfoKey]; // NSString *userPwd = [[NSUserDefaults standardUserDefaults] objectForKey:kUserPwdKey]; login.userLoginName = userPhone; // login.userPwdTF = userPwd; } 4、 #import "SDLoginViewController.h" if (self.userLoginName.length == 0) { self.phoneNumTF.placeholder = @"手机号/用户名/邮箱"; [self.phoneNumTF setValue:[UIColor colorWithHexString:@"#A7A7A7"] forKeyPath:@"_placeholderLabel.textColor"]; } else { self.phoneNumTF.text = self.userLoginName; } if (self.userPwdTF.length == 0) { self.pwdTF.placeholder = @"密码"; [self.pwdTF setValue:[UIColor colorWithHexString:@"#A7A7A7"] forKeyPath:@"_placeholderLabel.textColor"]; } else { self.pwdTF.text = self.userPwdTF; }