- Demo代码地址:TabandNav
1. 都是视图控制器的管理容器
1.1 区别
UINavigationController
以栈的形式保存视图控制器,使用push将视图控制器入栈、pop移除栈顶控制器,pop后视图控制器对象会被释放UITabBarController
用于不同视图控制器间的切换,切换视图时视图控制器不会被销毁,通常作为整个程序的rootViewController
- 下面是苹果推荐的方式
1.2 为何嵌套使用
- 将导航控制器嵌套在
UITabBarController
中,能够在不同的标签项里实现不同的层次结构 - 如下图中
Tab Bar Controller
关联着3个导航控制器,不同导航控制器下管理着不同数量的View Controller
2. Demo
- 点击登录Button显示
Tab Bar Controller
,可以三个Tab Bar
之间页面切换
- 创建3个视图控制器类,并分别设为3个导航控制器的根视图
//title是导航控制器的标题
class FirstViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .systemIndigo
title = "主页"
}
}
class SecondViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad(