一、导航控制器的一些属性和基本使用
1.把子控制器添加到导航控制器中的如手桥四种方法
(1)
1.创建一个导航控制器
UINavigationController *nav=[[UINavigationControlleralloc]init]
2.设置导航控制器为window的根视图
self.window.rootViewController=nav
3.添加
YYOneViewController *one = [[YYOneViewController alloc] init]
[nav pushViewController:one animated:YES]
(2)
1.创建一个导航控制器
UINavigationController *nav=[[UINavigationControlleralloc]init]
2.设置导航控制器为window的根视图
self.window.rootViewController=nav
3.添加
YYOneViewController *one = [[YYOneViewController alloc] init]
[nav addChildViewController:one]
(3)
1.创建一个导航控制器
UINavigationController *nav=[[UINavigationControlleralloc]init]
2.设置导航控制器为window的根视图
self.window.rootViewController=nav
3.添加
YYOneViewController *one = [[YYOneViewController alloc] init]
nav.viewControllers=@[one](添加到导航控制器的栈中)
说明:nav.viewControllers== nav.childViewControllers注意该属性是只读的,因此不能像下面这样写。nav.childViewControllers = @[one]
(4)最常用的方法
YYOneViewController *one=[[YYOneViewController alloc]init]
UINavigationController *nav=[[UINavigationController alloc]initWithRootViewController:one]
2.当前子控制器界面导航栏的标题以及对应返回标题的设置渣猛
self.navigationItem.title=@"第一个界面"
self.navigationItem.backBarButtonItem=[[UIBarButtonItemalloc]initWithTitle:@"返回一"style:UIBarButtonItemStylePlain target:nilaction:nil]
3.给导航栏添加按钮
说明:可添加一个,也可以添加多个(数组)
添加导航栏左边的按钮(添加一个相机图标的按钮),会盖掉返回
self.navigationItem.leftBarButtonItem=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:nil action:nil]
4.界面跳转
跳转到第二个界面(当前为第三个,移除当前栈顶的控制器) [self.navigationControllerpopViewControllerAnimated:YES]
移除处理栈底控制器之外的所有控制器 [self.navigationControllerpopToRootViewControllerAnimated:YES]
只要传入栈中的某一个控制器,就会跳转到指定控制器 [self.navigationController popToViewController:<#(UIViewController *)#>animated:<#(BOOL)#>]
二、代码示例
YYAppDelegate.m文件
1 //
2 // YYAppDelegate.m
3 // 01-导航控制器的使用1
4 //
5 // Created by apple on 14-6-4.
6 // Copyright (c) 2014年 itcase. All rights reserved.
7 //
8
9 #import "YYAppDelegate.h"
10 #import "YYOneViewController.h"
11
12 @implementation YYAppDelegate
13
14 //应用程序启动完毕即会调用
15 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
16 {
17 self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]
18 self.window.backgroundColor = [UIColor whiteColor]
19
20
21 //3.添加子控制器到导航控制器中
22 //第一种也是最常用的一种
23 //YYOneViewController *one=[[YYOneViewController alloc]init]
24 //UINavigationController *nav=[[UINavigationController alloc]initWithRootViewController:one]
25
26 //1.创建一个导航控制器
27 UINavigationController *nav=[[UINavigationController alloc]init]
28 //2.设置导航控制器为window的根视图
29 self.window.rootViewController=nav
30
31 //第二种
32 YYOneViewController *one = [[YYOneViewController alloc] init]
33 [nav pushViewController:one animated:YES]
34
35 //第三种
36 //[nav addChildViewController:one]
37 //第四种(添加到导航控制器的栈中)
38 //nav.viewControllers=@[one]
39
40 // 导航控制器的栈
41 //nav.viewControllers== nav.childViewControllers
42 // 注意该属性是只读的,因此不能像下面这样写
43 //nav.childViewControllers = @[one]
44
45
46 [self.window makeKeyAndVisible]
47 return YES
48 }
49
50 @end
几乎在开发每个app中都会使春陵用到 UINavigationController ,然而几乎没人喜欢系统自带的样式,自定义一些 navigation bar 的样式,也变得重要了。本文会从以下几个方面来说明如和自定义 navigation bar 的样式。
系统的 navigation bar 长这样:
我们来看一下 navigation bar 的几个重要模块。
改变 navigation bar 的颜色很容易
translucent 半透明的,看着会有一层毛玻璃效果。
barTintColor 背景色,不是什么 backgroundColor 也亮胡不是 tintColor 。
也可以设置一张图当作背景
titleTextAttributes 你可以设置字体颜色等属性
这里是文档
我们甚至可以自己设置 navigationItem.titleView 来改变标题的样式
UIBarButtonItem 可以创建多种类型的按钮,文字、图片、自定义视图,还可以设置它的字体属性。
tintColor 设置后会影响文字或者图片颜色
默认的返回按钮包含一个返回的图片和文字,文字是控制器的标题,没有默认是Back。
给 backBarButtonItem 复值文字类型的 UIBarButtonItem 可以改变返回的文字,复值图片类型的但是不会返回的箭头,然后你的返回按钮就有两个图标。怎么办呢,我们设置一个 navigationItem.leftBarButtonItem 来当作返回按钮,还需要敬森拦注意的是这时候侧滑返回会失效,需要设置交互手势代理。
自定义样式
隐藏横线
翻译自 https://dmtopolog.com/navigation-bar-customization/
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)