关于 UINavigationController和UITabBarController及登录注册混编的方法

很多人在使用UINavigationController和UITabBarController时候对设置根视图不知如何下手,下面就给大家做一些提示,纯属个人方法,有更好的还望指出共同学习;

一  UINavigationController和UITabBarController设置根视图

1.首先在 Appdelegate.m的一下方法中

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  ...   }

    //初始化 UITabBarController并设置根视图

    self.tabBarController = [[UITabBarController alloc]init];

    self.window.rootViewController = self.tabBarController;

2.然后创建字控制器,以一个商城为类(为了更清晰理解,代码有点啰嗦)

HomeViewController * homeVC = [[HomeViewController alloc]init];                    //首页 ClassifyViewController * classifyVC = [[ClassifyViewController alloc]init];          //分类ShoppingViewController * shopCartVC = [[ShoppingViewController alloc]init];//购物车 MineViewController * mineVC = [[MineViewController alloc]init];                        //我的

3.为每个控制器分别绑定UINavigationController

UINavigationController * homeNav = [[UINavigationController alloc]initWithRootViewController:homeVC];                                     //首页

UINavigationController * classifyNav = [[UINavigationController alloc]initWithRootViewController:classifyVC];                                  //分类

UINavigationController * shopCartNav = [[UINavigationController alloc]initWithRootViewController:shopCartVC];                                //购物车 

UINavigationController * mineNav = [[UINavigationController alloc]initWithRootViewController:mineVC];                                        //我的

4.将绑定好UINavigationController的控制器添加在UITabBarController中

[self.tabBarController addChildViewController:homeNav];

[self.tabBarController addChildViewController:classifyNav];

[self.tabBarController addChildViewController:shopCartNav];

[self.tabBarController addChildViewController:mineNav];

这样每个字控制器都有UINavigationController,方便在开发中使用 push 和 pop,而且 tabBarController 也可以控制不同字控制器;


二  实际项目中我们都是在登录成功后才进入程序在这里可以在

1.- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  ...   }

方法中使用系统的

- (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^ __nullable)(void))completion

方法,先让当前页面(就是设置好的主界面)presentViewController到登录界面;

2.登录成功后在点击方法中使用系统的

- (void)dismissViewControllerAnimated: (BOOL)flag completion: (void (^ __nullable)(void))completion


方法将登录注册页面移除掉,回到主界面,具体代码如下:

appdelegate.m中:

//设置好的主界面

[self  UITabBarController];

//先加载登录注册页面

LoginViewController * loginVC = [[LoginViewController alloc]init];

[self.tabBarController presentViewController:loginVC animated:NO completion:nil];


在LoginViewController的.m中:

-(void)loginButtonClick{

            //跳转到主页

            [self dismissViewControllerAnimated:YES completion:nil];

}


三.在登录界面的忘密和注册按钮如果想方便使用pop和 push 方法如下:

-(void)registerButtonClick{

        RegisterViewController * registerVC = [[RegisterViewController alloc]init];

        UINavigationController * navC = [[UINavigationController alloc]                      initWithRootViewController:registerVC];

        [self presentViewController:navC animated:YES completion:nil];

}

如果大家有更好的办法,还望提出大家共同研究学习!

你可能感兴趣的:(关于 UINavigationController和UITabBarController及登录注册混编的方法)