3种方式
方式1 普通页面控制器,这种方式属于模态,只能一层一层叠加或一层一层顺序减少,不能实现跨页面跳转,比如 A->B->C->D, D 想往回跳,只能到C, 不能到 A和B
//跳转
self.present(Page1_Spash(), animated: false, completion: nil)
//返回
self.dismiss(animated: false, completion: nil)
方式2. 使用导航控制器,这种方式,属于堆栈,可以实现简单的跨页面跳转, 比如A->B->C->D, D 想往回跳,可以直接跳转到A或B或C,但是跳转后的堆栈,会发生变化,
比如 D跳转到B后,不能直接跳到D, 因为跳转B后堆栈中的C和D都没有了,如果想重新进入C/D,则需要重新压栈
打印堆栈方法:
let vews: [UIViewController] = (self.navigationController?.viewControllers)!
if vews.count > 0 {
for vew in vews{
print( type(of: vew))
}
}
1. 压栈 self.navigationController?.pushViewController(VC2(), animated: true )
2. 弹出 self.navigationController?.popToViewController(appDG.page_02!, animated: true) //appDG.page_02堆栈中某项
3. 直接跳转堆栈中已经有的
4. 根视图 self.navigationController?.popToRootViewController(animated: true)
方式3 UITabBarController,这种方式属于并列的视图 可以在任意视图间切换
切换方法 TabBar?.selectedIndex = 1 //从0开始
打印视图数量
let vews: [UIViewController] = (appDG.TabBar?.viewControllers)!
print( vews )