UINavigationController的使用介绍
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UINavigationController的使用介绍相关的知识,希望对你有一定的参考价值。
1.UINavigationCotroller
1> UINavigationContoller是存储在栈区的.
2> 栈区的执顺序是先进后出.
3>UINavigationController的把没一个子控制器都压入到栈去,然后通过方法弹出最上面的控制器.
3> 通过pust的方法跳到下一个控制器.
4> 通过pop方法可以返回上一个控制器
2.创建一个UINavigationController
//2.创建控制器 UINavigationController *nav = [[UINavigationController alloc]init]; //2.1把第一个控制器压入到栈中 HMOneViewController *oneVc = [[HMOneViewController alloc]init]; [nav pushViewController:oneVc animated:YES]; //2.2设置window根控制器 self.window.rootViewController = nav; //2.3让window成为主要的window并且可见 [self.window makeKeyAndVisible];
3.通过按钮切换控制器
//按钮点击事件 - (void)buttonDidClick { //创建一个第二个控制器 HMTwoViewController *twoVc = [[HMTwoViewController alloc]init]; //把第二个控制器压入到栈中 [self.navigationController pushViewController:twoVc animated:YES]; }
4.通过代码设置UINavigationController的导航
//4.1设置控制器的标题 self.navigtionItem.title = @"红色控制器"; //4.1.1上面代码可以简写 self.titlr = @"红色控制器"; //4.1.2 设置自定一的标题 self.navigationItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"MainTitle"]] //4.2设置导航栏的颜色,要获取NavigationBar的外观来设置 [[UINavigationBar appearance] setBarTintColor:[UIColor blueColor]]; //4.3设置NavigationBar的title的颜色 [[UINavigationBar appearance]setTitleTextAttributes:@{ NSForegroundColorAttributeName:[UIColor whiteColor] }]; //4.4设置left按钮right按钮 //4.4.1创建一个自定义的按钮 self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button] //4.4.2创建一个文字按钮 self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"下一个控制器" style:UIBarButtonItemStylePlain target:nil action:nil]; //4.4.3UIBarButtonItme的系统提供的类型创建方式 UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:<按钮的类型> target:<执行谁的方法> action:<执行的方法>] //4.5设置返回按钮,传一个自定义的按钮,系统会自动帮我们添加"<" self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];
5.通过storyboard创建控制器
1>设置UINavigationController的根控制器
2>通过按钮切换控制器,在iOS8之前用push和modal. 在iOS8以后用show和present Modally.
2.1.show动画是从右面过来
2.2.present Modally动画是从下面过来
2.3.Custom是自定义的跳转,以后会讲到.
3>如果出栈,不能使用脱线方式实现,必须使用代码,Storyboard中线是不能交叉的
//如果出栈,不能使用脱线方式实现,必须使用代码,Storyboard中线是不能交叉的 //让控制器出栈,返回到上一个控制器 [self.navigationController popViewControllerAnimated:YES]; //让控制器出栈,返回到跟控制器上 [self.navigationController popToRootViewControllerAnimated:YES]; //让控制器出栈,返回到指定控制器上 [self.navigationController popToViewController:控制器名字 animated:YES]; //让控制器出栈,弹出栈顶的控制器 [self.navigationController popoverPresentationController];
6.视图发生变化的时候调用的方法
//当视图将要显示的时候就会调用 - (void)viewWillAppear:(BOOL)animated //当视图显示完成的时候就会调用 - (void)viewDidAppear:(BOOL)animated //当时图将要消失的时候调用 - (void)viewWillDisappear:(BOOL)animated //当时图消失完毕后调用 - (void)viewDidDisappear:(BOOL)animated //当视图加载完成调用 - (void)viewDidLoad
!--EndFragment-->!--StartFragment-->
以上是关于UINavigationController的使用介绍的主要内容,如果未能解决你的问题,请参考以下文章
UINavigationcontroller 中未使用的视图会发生啥?
一起使用 UITabBarController 和 UINavigationController
使用 push segue 时 UINavigationController 是不是强制
UINavigationController - 使用 UIBlurEffect 清除背景