iOS UINavigationController(导航控制器
2019-03-11 本文已影响0人
Imjeef
可能有小伙伴在使用UINavigationController出现过不显示返回按钮,导航栏完全不显示问题。其实我就是这样的一个小白。下边简单说一下使用方法。
1、UINavigationController导航控制器的设计通过一个控制器管理多个其他的控制器。那么需要将导航控制作为“主”控制器使用。
此处“主”控制器的理解并不等同于iOS的根控制器
实际使用可以是根控制是UIViewController-Present-UINavigationController
此时,最顶层的UINavigationController可作为主控制器push其他控制器
2、UINavigationController导航跳转控制器的方式为PushViewController(压栈方式)。如果使用PresentViewController方式(弹出方式)使用,则不会把目标控制器“变成”UINavigationController的“子”控制器(没有把目标控制器交给UINavigationController管理)。所以这种方式打开的控制器不会显示导航栏(也就看不到导航栏和按钮)。我就是犯了这样的错误。
3、UINavigationController导航的目标(push压栈方式)目标控制器不能是一个UINavigationController类型,否则会产生异常。
4、UINavigationController至少push一个子控制器后才显示导航栏按钮,所以在UINavigationController直接加上导航栏按钮等是不会显示的。
5、以上若都还是不显示,还需要注意一个情况: iOS11以前的系统不显示的还需要给添加的按钮设置一个区域即需要设置UIView.Frame属性。
以上几点很好理解。接下来就是在push的目标控制器,加入各自需要的导航按钮完成各自的业务功能。