很多人在使用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];
}
如果大家有更好的办法,还望提出大家共同研究学习!