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. hdoj--3440--House Man(差分约束)

    House Man Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  2. USACO 2.2 Runaround Numbers

    Runaround Numbers Runaround numbers are integers with unique digits, none of which is zero (e.g., 81 ...

  3. css盒模型:BFC、IFC边距重叠解决方案

    BFC:块级格式化上下文 IFC:行内格式化上下文 实例如下: <div class="out" style="background: red;"> ...

  4. gdal集成kml库的做法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 最近要读取kml文件,具体就是把kml文件当作一个矢量文件来读取.我发现gdal是支持集成kml库的.不过集成这个km ...

  5. Powerpivot PowerBI相关组件下载安装(附操作截图)

    加载方式:com加载项加载方法: 点击Excel界面[文件]→[选项]→[加载项]→[COM加载项]→[转到] Excel2013加载PowerView Excel216PowerQuery不需要加载 ...

  6. Boost Asio(一)初探

    一.简介 Boost Asio ( asynchronous input and output)关注数据的异步输入输出.Boost Asio 库提供了平台无关性的异步数据处理能力(当然它也支持同步数据 ...

  7. poj 2828 Buy Tickets【线段树 单点更新】

    倒着插,先不理解意思,后来看一篇题解说模拟一下 手动模拟一下就好理解了----- 不过话说一直写挫---一直改啊----- 好心塞------ #include <cstdio> #inc ...

  8. javascript: 基于原型的面向对象编程

    Douglas Crockford指出javascript是世界上最被误解的编程语言.由于javascript缺少常见的面向对象概念,许多程序猿认为javascript不是一个合适的语言.我在做第一个 ...

  9. canvas 画图优化

    http://www.cnblogs.com/rhcad/archive/2012/11/17/2774794.html

  10. Windows10 下安装 Mongodb

    一.先登录Mongodb官网https://www.mongodb.com/download-center#community 下载   安装包.32.64位的都行.