自我“出道”以来,所有接触过的demo,教程文章等,都是在AppDelegate.m文件中判断用户第一次进入或者使用新版本,以此来决定是否展示引导页。先不论我是不是孤陋寡闻,请看以下:
- (void)showPage {
if ([self isFirstLuanch]) {
[self showGuidePage];//首次使用
} else if ([self userDidLogin]) {
[self showHomePage];//已自动登录
} else {
[self showLoginPage];
}
}
//显示引导页
- (void)showGuidePage {
GuidePageViewController *guideVC = [[GuidePageViewController alloc] init];
[self addChildViewController:guideVC];
[self.view addSubview:guideVC.view];
}
//显示首页
- (void)showHomePage {
TabBarController *tabBarVC = [[TabBarController alloc] init];
[self addChildViewController:tabBarVC];
[self.view addSubview:tabBarVC.view];
}
//显示登录页
- (void)showLoginPage {
EnterViewController *enterVC = [[EnterViewController alloc] init];
UINavigationController *enterNav = [[UINavigationController alloc] initWithRootViewController:enterVC];
[self addChildViewController:enterNav];
[self.view addSubview:enterNav.view];
}
//判断是否使用新版本
- (BOOL)isFirstLuanch {
NSString *key = (NSString *)kCFBundleVersionKey;
NSString *version = [[NSBundle mainBundle] objectForInfoDictionaryKey:key];
NSString *savedVersion = [[NSUserDefaults standardUserDefaults] objectForKey:@"version"];
if ([version isEqualToString:savedVersion]) {
return NO;
} else {
[[NSUserDefaults standardUserDefaults] setObject:version forKey:@"version"];
return YES;
}
}
//判断用户是否自动登录
- (BOOL)userDidLogin {
/**
* code
*/
return NO;
}
将代码放在默认的根视图ViewController.m,而不是在AppDelegate.m文件中,在ViewController.m的ViewDidLoad中调用showPage方法,即可实现,而不需要在AppDelegate.m文件中设置根视图,并根据用户使用状态而更改根视图。
swift版本代码:
//MARK: - 根据情况展示页面
func showPage() -> Void {
if self.isFirstLaunch() {
self.showGuidePage()//首次使用
} else if self.isUserLogin() {
self.showHomePage()//用户已登录
} else {
self.showLoginPage()
}
}
//MARK: - 页面展示
func showGuidePage() -> Void {
let guidePage = GuideViewController()
self.addChildViewController(guidePage)
view.addSubview(guidePage.view)
}
func showLoginPage() -> Void {
let loginPage = LoginEnterViewController()
self.addChildViewController(loginPage)
view.addSubview(loginPage.view)
}
func showHomePage() -> Void {
let homePage = TabBarController()
self.addChildViewController(homePage)
view.addSubview(homePage.view)
}
//MARK: - 判断
/// 判断是否首次使用新版本
func isFirstLaunch() -> Bool {
let key: String = kCFBundleVersionKey as String
let version = Bundle.main.object(forInfoDictionaryKey: key) as! String
let savedVersion = UserDefaults.standard.string(forKey: "version")
if savedVersion == nil || version != savedVersion {
UserDefaults.standard.setValue(version, forKey: "version")
return true
} else {
return false
}
}
/// 判断用户登录状态
func isUserLogin() -> Bool {
/**
* code in here
*/
return false
}