前言:作为一个iOS开发的菜鸟,半年来还没有完完整整的开发过项目,很高兴,这一次另一位比我厉害的iOS哥们忙于上一个项目的迭代工作,所以这次的项目,由我先来开始启动,不管这个项目将来会不会一直我接手,但是要认真的对待是必须的,所以有关项目的每一个功能和实际的应用,我希望能够记录下来,一来作为以后的参考,而来希望也能够将知识传递出去,也通过博客的形式来考察自己掌握的程度,是否能够自圆其说,那么话不多说,开始吧。。。。
正文:
每个APP下载完第一次使用或者更新后第一次进入,一般都会进入一个3~4页的欢迎页面,然后再进入到主界面,这个是开发中经常会使用到的功能,所以,这个功能对于开发APP来说还是很重要的,做为一个经常使用的功能,把这个功能给单独整合出来作为一个工具类是一个不错的考虑。
//创建选择视图的工具类,命名如图。
//
// QKControllerTool.h
// kaixinwaP
//
// Created by wangyao on 15/11/24.
// Copyright © 2015年 wangyao. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface QKControllerTool : NSObject
/**
*选择根视图控制器
*/
+ (void)chooseRootViewController;
@end
以上是.h文件
创建了一个选择视图的类方法
//
// QKControllerTool.m
// kaixinwaP
//
// Created by wangyao on 15/11/24.
// Copyright © 2015年 wangyao. All rights reserved.
//
#import "QKControllerTool.h"
#import "QKTabBarController.h"
#import "NewFeatureViewController.h"
@implementation QKControllerTool
+(void)chooseRootViewController
{
// 如何知道第一次使用这个版本?比较上次的使用状况
NSString * versionKey = (__bridge NSString *)kCFBundleVersionKey;
// 从沙盒中取出上次存储的软件版本号(取出用户上次的使用记录)
NSUserDefaults * defaults =[NSUserDefaults standardUserDefaults];
NSString * lastVersion = [defaults objectForKey:versionKey];
// 获取当前打开软件的版本号
NSString * currentVersion = [NSBundle mainBundle].infoDictionary[versionKey];
UIWindow * window = [UIApplication sharedApplication].keyWindow;
if ([currentVersion isEqualToString:lastVersion]) {
// 如果当前版本号 == 上次使用的版本号:显示tabBarViewController
[UIApplication sharedApplication].statusBarHidden = NO;
window.rootViewController = [QKTabBarController new];
NSLog(@"版本没变");
}else {
// 当前版本!=上次使用的版本:显示版本新特性
window.rootViewController = [NewFeatureViewController new];
[UIApplication sharedApplication].statusBarHidden = YES;
// 存储这次使用的软件版本
[defaults setObject:currentVersion forKey:versionKey];
[defaults synchronize];
NSLog(@"版本升级");
}
}
@end
总结:
一.
1. NSString * versionKey = (__bridge NSString *)kCFBundleVersionKey;
2.NSUserDefaults * defaults =[NSUserDefaults standardUserDefaults];
3. NSString * lastVersion = [defaults objectForKey:versionKey];
//1.其实功能等同于NSString * versionKey = “kCFBundleVersionKey”;
替代一下而已
2,3是用取infoplist文件中的版本信息的意思;
二.
1.NSString * currentVersion = [NSBundle mainBundle].infoDictionary[versionKey];
1.这里的[NSBundle mainBundle].infoDictionary[versionKey];
是从当前安装的这个项目里面的info.plist文件中读取versionkey这个的值。
三.
[UIApplication sharedApplication].statusBarHidden = NO;
//控制上面电池条那个的显示还是不现实,因为如果是欢迎页的画,一般是不需要显示的
四
UIWindow * window = [UIApplication sharedApplication].keyWindow;
if ([currentVersion isEqualToString:lastVersion]) {
// 如果当前版本号 == 上次使用的版本号:显示tabBarViewController
[UIApplication sharedApplication].statusBarHidden = NO;
window.rootViewController = [QKTabBarController new];
NSLog(@"版本没变");
}else {
// 当前版本!=上次使用的版本:显示版本新特性
window.rootViewController = [NewFeatureViewController new];
[UIApplication sharedApplication].statusBarHidden = YES;
// 存储这次使用的软件版本
[defaults setObject:currentVersion forKey:versionKey];
[defaults synchronize];
NSLog(@"版本升级");
}
//最后这个就是关键部分
先把用于显示的主视窗取出来 :UIWindow * window = [UIApplication sharedApplication].keyWindow;
然后再根据判断来设置主视窗的根视图,分别创建不同的viewController来实现控制显示功能。
后记:这里主要写的工具类的内容,有关tabbar和NewFeature两个类的具体实现,详见下一个博客。
一句话:珍惜一切就算没有拥有,别让欲望和贪婪使自己迷失。
关于iOS开发开心蛙家长iOS端开发过程中的零碎知识归纳(1)---关于进入App进入欢迎页面还是直接进入主页工具类的实现
原文:http://www.cnblogs.com/YaoWang/p/5047727.html