ios学习笔记3--导航控制器详解

前言:
导航控制器和标签控制器是ios中常用的两个控件。因此,特意写一篇文章记录一下,自己对导航控制器的理解,持续更新中。

  • 导航条UINavigationBar介绍
  • 容器UINavigationItem介绍
  • 控件UIBarButtonItem介绍
  • 导航控制器UINavigationController介绍
  • 导航控制器UINavigationController的xib实现
  • 导航控制器UINavigationController自定义返回键
  • 导航控制器UINavigationController转场动画
  • 导航控制器UINavigationController添加左滑push
  • 导航控制器UINavigationController拦截返回键事件

一、导航条UINavigationBar介绍

导航条是一个继承UIView的控件。以前这里有一个思维误区,认为UINavigationBar是导航控制器特有的。其实,它可以作为一个独立控件来使用,只不过是我们使用最多的地方还是导航控制器,很少在其它地方使用。另外,导航控制器将UINavigationBar封装起来,而不需要开发者手动设置。

这里将对它的属性进行详细解释:
UINavigationBar通常作为多个UINavigationItem的容器,以Stack的形式管理多个UINavigationItem,类似于导航控制器管理ViewController。其属性和方法如下:

  • pushNavigationItem:(UINavigationItem *)item animated:(BOOL)animated:这个方法用于将UINavigationItem压入UINavigationBar的堆栈
  • popNavigationItemAnimated:(BOOL)animated:这个方法用于将UINavigationItem弹出堆栈,不再显示
  • setItems:animated:(BOOL)animated:这个方法用于将设置UINavigationBar所包含的UINavigationItem
  • topItem:这个属性返回当前堆栈中最上层的UINavigationItem
  • backItem:这个属性返回当前堆栈中最底层的UINavigationItem

UINavigationItem属性和方法介绍:
UINavigationItem是NSObject类,同样也作为容器使用。它的结构是左边按钮、标题、右边按钮。每个按钮是UIBarButtonItem控件,也是NSObject类。

  • title:标题文本
  • titleView:设置UINavigationItem的标题控件。为自定义控件提供方便,优先级大于title
  • backBarButtonItem:用于设置返回键按钮形式
  • hidesBackButton:用于设置是否隐藏后退按钮
  • leftBarButtonItems:用于设置或返回UINavigationItem左边的多个按钮
  • rightBarButtonItems:用于设置或返回UINavigationItem右边的多个按钮
  • leftBarButtonItem:用于设置或返回UINavigationItem左边的单个按钮
  • rightBarButtonItem:用于设置或返回UINavigationItem右边的单个按钮

  • setHidesBackButton: animated:(BOOL)animated:用于设置是否显示后退按钮

  • setLeftBarButtonItems: animated:(BOOL)animated :用于设置左边多个按钮
  • setRightBarButtonItems: animated:(BOOL)animated :用于设置右边多个按钮
  • setLeftBarButtonItem: animated:(BOOL)animated:用于设置左边单个按钮
  • setRightBarButtonItem: animated:(BOOL)animated:用于设置右边单个按钮

这个以UINavigationBar添加UINavigationItem为例,请看效果图:

这里写图片描述

代码下载地址如下:
https://github.com/yscMichael/UINavigationBar

二、UIBarButtonItem介绍

三、导航控制器使用
上面看到UINavigationBar单独作为一个控件使用,并不能有很大的派场,所以这里重点介绍UINavigationController,这个在我们日常app开发过程中还是有很大用场的。

UINavigationController类似于UINavigationBar,它使用Stack的形式管理多个ViewController。这里UINavigationController对UINavigationBar进行了进一步封装,它会管理所有ViewController的navigationItem,导航控制器在将ViewController压入堆栈的同时,会将ViewController对应的navigationItem压入UINavigationBar所管理的栈。也就是说一个导航控制器对应一个UINavigationBar,这里的每个ViewController无法操作UINavigationBar,只能操作自己的navigationItem,来改变自己顶部导航条显示的内容。这里每个ViewController还可以设置自己的底部的工具条。

UINavigationController属性和方法详解:
topViewController:返回容器最顶层的ViewController,这个属性是只读的
visibleViewController:返回当前可见界面对应的ViewController,这个属性是可读的
viewControllers:该属性用于设置或者返回导航控制器能够管理的ViewController
setViewControllers:animated:(BOOL)animated:该方法同样用来设置导航控制器能够管理的ViewController

pushViewController: animated:(BOOL)animated:将ViewController压入导航控制器管理的栈中
popViewControllerAnimated:(BOOL)animated:将栈顶的ViewController弹出,返回被移除的ViewController
popToViewController: animated:(BOOL)animated:将弹出到指定的ViewController,返回被移除的ViewController
popToRootViewControllerAnimated:(BOOL)animated:将弹出到RootViewController,返回被移除的ViewController

UINavigationController控制器控制导航条的属性和方法:
navigationBar:返回导航控制器管理的导航条,每个导航控制器对应一个导航条。
navigationBarHidden:用于设置导航条是否隐藏。
setNavigationBarHidden: animated:(BOOL)animated:同上,是否隐藏导航条

UINavigationController控制器控制工具条的属性和方法:
toolbar:返回导航控制器管理的工具条,每个导航控制器对应一个工具条

备注:工具条用的比较少,所以这里特别讲解一下。工具条和上面的导航条是一致的,每个导航控制器对应一个工具条,每个ViewController要想显示工具条,不能直接操作toolbar属性,需要通过setToolbarItems: animated:(BOOL)animated来进行设置,稍后会进行详细讲解toolbar。

toolbarHidden:用于设置是否隐藏工具条
setToolbarHidden: animated:(BOOL)animated:用于设置是否隐藏工具条

四、导航控制器UINavigationController的xib实现、
这里首先你讲解一下storyBoard和xib的区别

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值