UIKit - UINavigationController(导航控制器)

UINavigationController管理堆栈视图控制器和一个导航栏。它将水平视图转换为推动的导航栏和弹出视图,同时保持同步。

1.创建UINavigationController

//1.先获取首页的视图控制器
let viewController = ViewController()

//2.将首页视图控制器作为UINavigationController的根视图
let navigationController = UINavigationController(rootViewController: viewController)
        
//3.将UINavigationController控制器作为window根视图
    self.window?.rootViewController = navigationController

2.为堆栈视图添加新的视图(跳转到新页面)

//获取新视图
let detailViewContoller = DetailPageViewController()

//将新视图添加到堆栈中
    self.navigationController?.pushViewController(detailViewContoller, animated: true)

3.推出堆栈视图中最新的视图(返回上一个页面)

let secondViewContoller = SecondPageViewController()

//推出视图
    self.navigationController?.pushViewController(secondViewContoller, animated: true)

4.返回到根视图

self.navigationController?.popToRootViewController(animated: true)

5.导航栈里的控制器

//获取当前导航栈里所有的控制器
self.navigationController?.viewControllers
        
//获取某个导航的顶部控制器
self.navigationController?.topViewController
        
//当前访问的控制器
self.navigationController?.visibleViewController

6.显示与隐藏导航栏

//头导航的显示与隐藏
self.navigationController?.isNavigationBarHidden = true
self.navigationController?.setNavigationBarHidden(true, animated: false)

//底部导航的显示与隐藏
self.navigationController?.isToolbarHidden = false
self.navigationController?.setToolbarHidden(false, animated: true)

7.不同事件显示与隐藏导航栏

//当控制器上下滑动,导航的显示与隐藏
self.navigationController?.hidesBarsOnSwipe = true
        
//用户点击控制器,导航的显示与隐藏
self.navigationController?.hidesBarsOnTap = true
        
//键盘弹出时隐藏导航
self.navigationController?.hidesBarsWhenKeyboardAppears = true
        
//当导航栏的垂直size比较紧凑的时候,导航栏自动隐藏
self.navigationController?.hidesBarsWhenVerticallyCompact = true

8.获取导航栏隐藏的手势

//获取上下滑动隐藏导航的手势
let OnSwipeGesture = self.navigationController?.barHideOnSwipeGestureRecognizer.maximumNumberOfTouches = 2
        
//获取点击控制器隐藏导航的手势
let OnTapGesture = self.navigationController?.barHideOnTapGestureRecognizerOnTapGesture?.numberOfTouchesRequired = 2

9.UINavigationControllerDelegate

//导航跳转调用该函数 
func navigationController(_ navigationController: UINavigationController, didShow viewController: UIViewController, animated: Bool) { 
// 当前页控制器和跳转后的控制器 
print(navigationController,viewController) } 

// 导航每次发生跳转前调用的函数 
func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) { 
// 当前页控制器和将要跳转后的控制器 
print(navigationController,viewController) 
} 

// 导航支持的屏幕方向 
func navigationControllerSupportedInterfaceOrientations(_ navigationController: UINavigationController) -> UIInterfaceOrientationMask { 
    return .all 
} 

// 导航首先支持的屏幕方向 
func navigationControllerPreferredInterfaceOrientationForPresentation(_ navigationController: UINavigationController) -> UIInterfaceOrientation { 
    return .portrait 
}

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值