iOS 自己主动登录,登录过程中一直显示载入页
iOS开发中 假设client做的人性化一点肯定会考虑自己主动登录
事实上原理非常easy,就是再首次登录成功之后将username和password存入userdefault 下次登录的时候推断usedefault中有没有存储usernamepassword,假设有的话就绕过登录界面直接登录
可是在做的过程中遇到了一个问题 如今做一整理,供大家学习,指正
一般实现自己主动登录都是在载入页中去实现。
可是登录一般都须要与server通信。是异步的,而载入页在主线程中。这样就无法控制载入页在登录完毕(也就是server返回信息之后)之后再消失
我遇到的问题就是登录还没有完毕,载入页已经完毕。就会跳出一个空白页面。等自己主动登录完毕之后才会跳转首页
解决的方法就是,自己做一个viewControl 界面和载入页一模一样,普通情况下载入页都是一张图片比方微信载入页面就是
我们自己见里的 viewcontroller 仅仅须要设置一个全屏图片,讲载入页图片放上去。
然后再appdelegate 中推断 假设是自己主动登录 就直接将
rootViewController
设置为我们自己新建的viewcontroller
然后再登录完毕之后做跳转即可
上代码
首先是我自己新建的viewcontroller 仅仅须要载入一张图片就可以
@implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. UIImageView *imageView=[[UIImageView alloc]initWithFrame:SCREEN_FRAME]; imageView.image=[UIImage imageNamed:@"HelpSecond"]; [self.view addSubview:imageView]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
第一次登录成功之后 将用户信息存入
NSUserDefaults *userD=[NSUserDefaults standardUserDefaults]; [userD setValue:loginUserinfo forKey:@"loginuserinfo"];
我的做法是将username password(md5加密过的。这样能够直接拉过来用) 存入字典。然后再将字典存入userdefault
下来在appdelegate 中推断是否usedefault中实username password 有的话 開始自己主动登录
NSUserDefaults *userD=[NSUserDefaults standardUserDefaults];
NSDictionary *loginUserinfoDic=[userD valueForKey:@"loginuserinfo"]; if (loginUserinfoDic!=NULL) { [userD setValue:@"autologin" forKey:@"isautologin"]; ViewController *vc=[[ViewController alloc]init]; _window.rootViewController=vc; LoginViewController *loginVC=[[LoginViewController alloc]init]; [loginVC login:loginUserinfoDic]; }
推断假设是 自己主动登录 首先讲 rootviewcontroller 设置为我们自己创建的viewcontroller
然后再调用自己主动登录方法
在自己主动登录完毕之后又一次设置rootviewcontreler就可以
-(void)loginSuccess { HomeViewController *homeVC=[[HomeViewController alloc]init]; ExploreViewController *exploreVC=[[ExploreViewController alloc]init]; EnjoyViewController *enjoyVC=[[EnjoyViewController alloc]init]; UserInfoViewController *userInfoVC=[[UserInfoViewController alloc]init]; UITabBarController *tabBarC=[[UITabBarController alloc]init]; tabBarC.viewControllers=@[homeVC,enjoyVC,exploreVC,userInfoVC]; //注意默认情况下UITabBarController在载入子视图时是懒载入的,所以这里调用一次contactController,否则在第一次展示时仅仅有第一个控制器tab图标。contactController的tab图标不会显示 for (UIViewController *controller in tabBarC.viewControllers) { UIViewController *view= controller.view; } [UIApplication sharedApplication].keyWindow.rootViewController=tabBarC; }
ok 假设有问题欢迎加qq讨论
苹果开发群 :414319235 欢迎增加 欢迎讨论问题
相关文章
- 备份从android到ios系统文件,如何将音乐从安卓设备转移到iOS设备中「建议收藏」
- IOS 大裁员,一半来自 BAT 大厂开发。
- windows ios文件_苹果电脑 装windows
- 软件测试|iOS自动化——元素定位
- 【IOS实用玩机技巧】爱思助手 IPA 签名功能常见问题汇总(iOS上架)
- iOS底层原理(二):运行时研究(一)
- 【IOS 开发】Objective-C Foundation 框架 -- 字符串 | 日期 | 对象复制 | NSArray | NSSet | NSDictionary | 谓词
- 【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)
- iMazing2023免费版iOS设备管理软件功能详情
- 写给iOS程序员的命令行使用秘籍详解手机开发
- iOS 设置app禁止横屏详解手机开发
- iOS监听系统键盘的出现和消失详解手机开发
- iOS获取网络的最新方法详解手机开发
- iOS UIImage 圆形图片剪切方案详解手机开发
- iOS开发–应用崩溃日志揭秘(二)详解手机开发
- 探索Linux系统:在iOS上下载(linux系统ios下载)
- 在iOS上搭建MySQL数据库连接(ios连接mysql数据库)
- Linux与iOS之间的技术对比(linux和ios)
- Linux技术可以开发IOS系统?(linux能开发ios吗)
- 操作系统比较:iOS 与 Linux 操作系统(ios与linux)
- 比较iOS和Linux:谁更具优势?(ios和linux)
- 在iOS上安装Linux系统的挑战(ios上安装linux)
- 基于Linux环境下iOS应用开发实践(linux下开发ios)
- iOS开发与Linux的技术融合(ios开发linux)
- 苹果 Xcode 开发工具显示,将有 iOS 14.8 版本
- 苹果 Xcode 开发工具显示,将有 iOS 14.8 版本
- IOS上可以安装Oracle吗(ios能装oracle吗)
- 移动端iOS技术实现Oracle数据库连接(ios联接oracle)
- 使用iOS就能操作Oracle数据库(ios上oracle)