实用小技巧(二十四):APP页面开启跳转逻辑处理

版本记录

版本号 时间
V1.0 2017.08.06

前言

在app中,很多时候都需要在输入框里面输入东西,这个时候键盘弹出,不可避免的就会有遮挡页面的问题,这一篇就讲一下解决键盘遮挡页面的方法。感兴趣的可以看看我写的其他小技巧。
1. 实用小技巧(一):UIScrollView中上下左右滚动方向的判断
2. 实用小技巧(二):屏幕横竖屏的判断和相关逻辑
3.实用小技巧(三):点击手势屏蔽子视图的响应
4.实用小技巧(四):动态的增删标签视图
5.实用小技巧(五):通过相册或者相机更改图标
6.实用小技巧(六):打印ios里所有字体
7. 实用小技巧(七):UITableViewCell自适应行高的计算
8. 实用小技巧(八):数字余额显示的分隔
9.实用小技巧(九):类头条模糊背景的实现
10.实用小技巧(十):晃动手机换后台服务器网络
11.实用小技巧(十一):scrollView及其子类显示的一些异常处理
12.实用小技巧(十二):头像图片缩放以及保存到相册简单功能的实现
13.实用小技巧(十三):一种类酷我音乐盒动画实现
14.实用小技巧(十四):生成跳往applestore指定app的方法
15.实用小技巧(十五):左侧向右滑动返回上一级控制器
16.实用小技巧(十六):获取设备信息
17.实用小技巧(十七):清除缓存目录
18.实用小技巧(十八):取出gif图的每一帧
19.实用小技巧(十九):获取相机和麦克风权限
20.实用小技巧(二十):游客模式的实现
21.实用小技巧(二十一):版本检测的实现
22.实用小技巧(二十二):键盘遮挡问题
23. 实用小技巧(二十三):获取闪光灯的控制

功能要求

当我们在启动一款app的时候,我们都需要做一些逻辑判断,以跳转到不同的页面,主要如下:

  • 先判断版本号是否一致。
  • 如果版本号一致,就直接判断是否已登录,如果没有登录就跳转到登录界面,如果已登录直接跳转到tabbar主页面。
  • 如果版本号不一致,那么就显示新特性引导页界面。

功能实现

下面我们就模拟一下这个app启动页面逻辑,直接看代码,代码里会提供解释和说明。

  • 根据判断逻辑返回的控制器,作为window的根控制器
    self.window = [[UIWindow alloc] initWithFrame:kJJCommonScreenBounds];

    //根据判断逻辑返回的控制器,作为window的根控制器
    UIViewController *mainVC = [self pickViewController];
    self.window.rootViewController = mainVC;
    [self.window makeKeyAndVisible];
  • 这里是主要的逻辑判断,判断程序的版本和存储的版本是否相同
- (UIViewController *)pickViewController 
{
    //判断版本号是否一致
    NSLog(@"版本号:%@----------%@", [self loadAppVersion], [self loadSavedAppVersion]);
    if ([[self loadAppVersion] isEqualToString:[self loadSavedAppVersion]]) {
        //如果一致,判断是否登陆
        if ([JJAppInfo isLogin]) {
            //如果登陆,跳到主页面
            return [JJmianTabBarVC sharedInstance];
        } 
        else {
            //如果未登录,跳到登陆界面
            return [[JJNavigationVC alloc] initWithRootViewController:[[JJLoginVC alloc] init]];
        }
    } else {
        //如果不是,则显示新特性
        //将新版本的appVersion存储到本地
        [self saveAppVersion:[self loadAppVersion]];
        return [JJNewGuideCollectionVC new];
    }
}
  • 新的版本的存储

这里是在AppDelegate中进行存储

- (void)saveAppVersion:(NSString *)version 
{
    NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
    [ud setObject:version forKey:@"appVersion"];
}
  • 程序版本和存储版本的判断逻辑
//获取当前版本号

- (NSString *)loadAppVersion 
{  
    //获取info
    NSDictionary *info = [NSBundle mainBundle].infoDictionary;
    
    //返回当前程序的版本号
    return info[@"CFBundleShortVersionString"];    
}

//获取沙盒存储的版本号

- (NSString *)loadSavedAppVersion 
{
    NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
    return [ud objectForKey:@"appVersion"];
}

功能验证

这里就给大家验证了,以前亲测可以的,大家感兴趣的可以自己尝试下。

后记

这个逻辑就一般的app进行启动的逻辑处理,包括了版本验证和登录页跳转等一系列的逻辑。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容