iOS 自动登录,登录过程中一直显示加载页

iOS开发中 如果客户端做的人性化一点肯定会考虑自动登录

其实原理很简单,就是再首次登录成功之后将用户名和密码存入userdefault 下次登录的时候判断usedefault中有没有存储用户名密码,如果有的话就绕过登录界面直接登录

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

一般实现自动登录都是在加载页中去实现,

但是登录一般都需要与服务器通信,是异步的,而加载页在主线程中,这样就无法控制加载页在登录完成(也就是服务器返回信息之后)之后再消失

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

解决办法就是,自己做一个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"];

我的做法是将用户名 密码(md5加密过的,这样可以直接拉过来用) 存入字典,然后再将字典存入userdefault

下来在appdelegate 中判断是否usedefault中有用户名 密码 有的话 开始自动登录

 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];
    [email protected][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  欢迎加入  欢迎讨论问题

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-24 08:33:14

iOS 自动登录,登录过程中一直显示加载页的相关文章

spring加载过程中jar包加载不了,解决方法

当我们在开发spring项目时,一般会将jar包放到webInf/lib下,这样是myeclipse自动将jar包加载到tomcat中webapps下,但是当我们新建一个lib文件夹的情况下,我们add building Path时就会出错,这时候我们有个技巧供使用. 1.项目上点击右键搜索de,找到deployment assembly 目的就是将此处添加的jar包添加到系统webINF/lib路径下 来自为知笔记(Wiz) spring加载过程中jar包加载不了,解决方法

ajax数据加载过程中进行数据加载提示

方法1:$(function(){ $.get("URL", function(Msg){ $("你要显示提示的地方").html("数据正在加载中.."); $("你要显示查询数据的地方").html(Msg); }); }); 方法2: <html><head> <title></title></head><body><input type=&q

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

转自:http://www.oschina.net/question/221817_121051 主要分析Android ListView滚动过程中图片显示重复.错乱.闪烁的原因及解决方法,顺带提及ListView的缓存机制.1.原因分析ListView item缓存机制:为了使得性能更优,ListView会缓存行item(某行对应的View).ListView通过adapter的getView函数获得每行的item.滑动过程中, a. 如果某行item已经滑出屏幕,若该item不在缓存内,则p

Android ListView滑动过程中图片显示重复错位闪烁问题解决[转载]

转自:here 主要分析Android ListView滚动过程中图片显示重复.错乱.闪烁的原因及解决方法,顺带提及ListView的缓存机制.1.原因分析ListView item缓存机制:为了使得性能更优,ListView会缓存行item(某行对应的View).ListView通过adapter的getView函数获得每行的item.滑动过程中, a. 如果某行item已经滑出屏幕,若该item不在缓存内,则put进缓存,否则更新缓存:b. 获取滑入屏幕的行item之前会先判断缓存中是否有可

Android中ListView异步加载图片错位、重复、闪烁问题分析及解决方案

Android中ListView异步加载图片错位.重复.闪烁问题分析及解决方案 我们在使用ListView异步加载图片的时候,在快速滑动或者网络不好的情况下,会出现图片错位.重复.闪烁等问题,其实这些问题总结起来就是一个问题,我们需要对这些问题进行ListView的优化. 比如ListView上有100个Item,一屏只显示10个Item,我们知道getView()中convertView是用来复用View对象的,因为一个Item的对应一个View对象,而ImageView控件就是View对象通

Android 4.3实现类似iOS在音乐播放过程中如果有来电则音乐声音渐小铃声渐大的效果

目前Android的实现是:有来电时,音乐声音直接停止,铃声直接直接使用设置的铃声音量进行铃声播放. Android 4.3实现类似iOS在音乐播放过程中如果有来电则音乐声音渐小铃声渐大的效果. 如果要实现这个效果,首先要搞清楚两大问题: 1.来电时的代码主要实现流程. 2.主流音乐播放器在播放过程中,如果有来电,到底在收到了什么事件后将音乐暂停了? 一:来电时的代码主要实现流程 我不是第一研究来电代码的人,网上已经有高手对这个流程剖析过,不是不完全符合我的要求,我参考过的比较有价值的是如下两个

跟我一起学extjs5(03--项目中文件的加载过程)

跟我一起学extjs5(03--项目中文件的加载过程) 上一节中用sencha工具自动创建了一个项目,并且可以在浏览器中查看.现在我们来看看js类加载过程.如下图所示: 1?首先:浏览器中输入 localhost:1841 ,调用 index.html; <!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <title>app</title> <!-- T

jquery mobile中显示加载中提示框和关闭提示框

在jquery mobile开发中,经常需要调用ajax方法,异步获取数据,如果异步获取数据方法由于网速等等的原因,会有一个反应时间,如果能在点击按钮后数据处理期间,给一个正在加载的提示,客户体验会更好一些. 先看两个方法,显示和关闭,方法来自于参考:http://blog.csdn.net/zht666/article/details/8563025 <script> //显示加载器 function showLoader() { //显示加载器.for jQuery Mobile 1.2.

iOS 通过分类实现 微信的导航栏&quot;加载中...&quot;

   使用简单: 1. #import "UIViewController+NavBarLoading.h"  2. 调 [self startLoading], 显示加载中...  3. 调 [self stopLoading], 恢复之前的导航栏Title 源码地址: https://github.com/tomatoK/UIViewController-Extension