UINavigationController的几个小问题

本文详细介绍了UINavigationController中navigationController、navigationBar和navigationItem三者的关系,以及pushViewController和presentViewController的区别。在页面跳转时,pushViewController用于通过堆栈管理页面,presentViewController则直接展示页面,后者回退只能返回上一页。设置导航栏内容时,应使用视图控制器的navigationItem属性,而非navigationController的。
摘要由CSDN通过智能技术生成

1.navigationController、navigationBar和navigationItem三者之间的关系

navigationController和navigationBar之间的关系相当于viewController和view之前的关系,一个是导航栏控制器和导航栏,另一个是视图控制器和视图。虽然在开发中经常使用navigationController中的navigationBar来设置导航栏,但是navigationBar也是一个独立的UI控件,可以不依赖navigationController而使用,navigationController中实现了navigationBar的代理,如果我们只使用navigationBar的话就要自己另外实现其代理方法。

navigationController是一个容器,它的堆栈里面保存的是多个viewController,navigationBar也是容器,它的堆栈结构里保存的是navigationItem。navigationItem是导航栏上显示内容的控件,比如导航栏的title,rightBarButtonItem等内容都是navigationItem中的属性。具体可以用下面这张图来说明(摘自https://juejin.im/post/5a4619cf6fb9a04525787284

主要部件.png

navigationBar中的topItem属性代表着其堆栈中栈顶的navigationItem,也就是当前页面上的viewController的n

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值