zoukankan      html  css  js  c++  java
  • 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 仿微信聊天界面,以及语音录制功能
    程序员的鄙视链
    Spring 4 官方文档学习(十一)Web MVC 框架之URI Builder
    Spring 4 官方文档学习(十一)Web MVC 框架之Flash Attributes
    Spring 4 官方文档学习(十一)Web MVC 框架之resolving views 解析视图
    JDK中的序列化和反序列化
    HTTP/1.1 学习
    HttpComponents 基础接口/类与HTTP message的对应关系
    Apache HttpComponents 学习
    HttpClient学习之 客户端HTTP编程入门
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/6918103.html
Copyright © 2011-2022 走看看