使用默认根视图ViewController设置引导页

自我“出道”以来,所有接触过的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
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值