IOS Swift3.1 手动页面跳转

来源:互联网 发布:vslam 算法公司 编辑:程序博客网 时间:2024/06/01 23:35

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 )

原创粉丝点击