iOS开发中 假设client做的人性化一点肯定会考虑自己主动登录

事实上原理非常easy,就是再首次登录成功之后将username和password存入userdefault 下次登录的时候推断usedefault中有没有存储usernamepassword,假设有的话就绕过登录界面直接登录

可是在做的过程中遇到了一个问题 如今做一整理,供大家学习,指正

一般实现自己主动登录都是在载入页中去实现。

可是登录一般都须要与server通信。是异步的,而载入页在主线程中。这样就无法控制载入页在登录完毕(也就是server返回信息之后)之后再消失

我遇到的问题就是登录还没有完毕,载入页已经完毕。就会跳出一个空白页面。等自己主动登录完毕之后才会跳转首页

解决的方法就是,自己做一个viewControl 界面和载入页一模一样,普通情况下载入页都是一张图片比方微信载入页面就是

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

我们自己见里的 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  欢迎增加  欢迎讨论问题

iOS 自己主动登录,登录过程中一直显示载入页的更多相关文章

  1. Android ListView滑动过程中图片显示重复错乱闪烁问题解决

    最新内容建议直接访问原文:Android ListView滑动过程中图片显示重复错乱闪烁问题解决 主要分析Android ListView滚动过程中图片显示重复.错乱.闪烁的原因及解决方法,顺带提及L ...

  2. AndroidListview 滑动过程中图片显示重复错乱解决方案

    主要分析Android中Listview滚动过程造成的图片显示重复.错乱.闪烁的原因及解决方法,顺便跟进Listview的缓存机制. 1.原因分析 Listview item 缓存机制:为了使得性能更 ...

  3. Javascript在ajax提交过程中页面显示加载中,请等待效果,并在提交过程中限制确定按钮防止多次提交,提交完成后,解除提交限制

    加载中,请等待div: <div id="load" class="center-in-center" style="display:none; ...

  4. 5月9日——vue渲染过程中{{xxx}}显示

    异常显示的原因: 这是由于浏览器的渲染机制导致的,浏览器是从头到尾  如果你的js引用在底部,那么浏览器会先加载dom此时,你用于渲染的{{}}识别符,因为还没读到该识别符对应的js文件,所以会被解析 ...

  5. Kubernetes集群搭建过程中遇到的问题

    1. 创建Nginx Pod过程中报如下错误: #kubectlcreate -f nginx-pod.yaml Error from server: error when creating &quo ...

  6. Android应用之——微信微博第三方sdk登录分享使用过程中的一些常见问题

    前言 近期在使用第三方登录和分享的过程中遇到了非常多问题,一方面能够归结为自己经验的不足,还有一方面事实上也说明了官方文档的含糊不清.这篇博文不会写关于怎样使用第三方登录分享,由于官方文档已经写明了步 ...

  7. 【转】SQL Server -- 已成功与服务器建立连接,但是在登录过程中发生错误

    SQL Server -- 已成功与服务器建立连接,但是在登录过程中发生错误 最近在VS2013上连接远程数据库时,突然连接不上,在跑MSTest下跑的时候,QTAgent32 crash.换成IIS ...

  8. 配置Office 365单点登录过程中的一些注意事项

    这些天一直在整O365单点登录的问题,其中涉及到了很多知识点,其中以ADFS,CA为主吧,IIS为辅.下面我就把这些天积累的一些经验写下来备用. 1. 申请证书不一定要通过“证书颁发机构Web注册”, ...

  9. 百度自动发贴,登录很顺利的模拟实现,但发贴攻关失败,能力有限,追JS过程中颇为痛苦

    攻关失败,且短期内看不到希望,看不到方向,且越来越焦急,目前已知的是,用根据用户的鼠标事件以一定的规则结合其他数据,服务器以这些数据验证是否为真正的手动发贴. 不过闲暇时实现了百度贴吧的自动签到. 较 ...

随机推荐

  1. 公布项目到NPM

    修己安人,内圣外王 近期,在开发Node项目过程中遇到了须要类jQuery深拷贝对象的问题.去Github找了半天,并没有符合的,于是,自己决定写一个(mixin.js),然后推送到NPM(查看Npm ...

  2. POJ3249 Test for Job(拓扑排序+dp)

    Test for Job Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 10137   Accepted: 2348 Des ...

  3. C# 用ManulResetEvent 控制Thread的 Suspend、Resume

    class Program { static void Main(string[] args) { Thread thread = new Thread(Work); thread.Start(); ...

  4. AJAX请求 $.ajaxSetup方法的使用

    转自:https://blog.csdn.net/qq_23476319/article/details/78798885 jQuery.ajaxSetup()函数用于设置AJAX的全局默认设置. 该 ...

  5. 13.ubuntu下Qt5无法使用中文的问题解决

    1.首先安装fcitx-frontend-qt5 sudo apt-get install fcitx-frontend-qt5 这个应该是默认安装的,然后查看fcitx-frontend-qt5 的 ...

  6. Extjs 可重用组件开始写 2014 8 23日

    今天开始自己去写组件. 这次写组件重点在于参考cfWeb来写出自己的组件. 首先先把结构做出来. 对于这次的自定义组件,现在所做的事情关键在于上面四个文件.于是将上面四个文件贴出来. MyApp.js ...

  7. HD-ACM算法专攻系列(22)——Max Sum

    问题描述: AC源码: 此题考察动态规划,解题思路:遍历(但有技巧),在于当前i各之和为负数时,直接选择以第i+1个为开头,在于当前i各之和为正数时,第i个可以不用作为开头(因为前i+1个之和一定大于 ...

  8. C#——单元测试

    测试搭建请看:http://www.cnblogs.com/Look_Sun/p/4514732.html 右键不出现Generate Unit Test选项请参考:http://www.jb51.n ...

  9. 微信小程序遇坑笔记

    最近做了一个简单的微信小程序,遇到了一些坑: 1.appid固定,但是appsecret是可以变的,而且没有地方查看,后台以查看就是变更了,所以这个地方在开发的时候需要保存好: 2.打开网页,这个网页 ...

  10. MeayunDB-高性能分布式内存数据库

    MeayunDB(www.meayun.com)是一款分布式的NoSQL列式内存数据库,由C#编写,主要为高性能,高并发,高可伸缩及大数据系统提供技术解决方案.基于MeayunDB,可以简单,快速的构 ...