iOS 获取当前导航控制器,进行页面跳转

方法一:根视图必须是 UITabBarController

/**
 导航跳转(前提:上级之前的视图控制器对象均采用导航跳转,且根视图是 UITabBarController)
 - parameter viewCtrl: 要跳转到的控制器对象
 */
func PushToViewCtrl(viewCtrl:UIViewController){
  //获取 tabbar 控制器
  let tabbarCtrl = UIApplication.sharedApplication().keyWindow?.rootViewController as? UITabBarController
  //获取当导航控制器
  let navCtrl = tabbarCtrl?.selectedViewController as? UINavigationController
  navCtrl?.pushViewController(viewCtrl, animated: true)
}
    PushToViewCtrl(viewCtrl)

方法二:发生过模态跳转

/**
 发生在模态跳转后的导航跳转(上级之前的视图控制器对象有发生模态跳转)
 
 - parameter viewCtrl: 要跳转到的控制器对象
 */
func PushToViewCtrlAfterPresent(viewCtrl:UIViewController)  {
  //获取根视图控制器
  let rootCtrl = UIApplication.sharedApplication().keyWindow?.rootViewController
  //获取当导航控制器
  let navCtrl = rootCtrl?.presentedViewController as? UINavigationController
  navCtrl?.pushViewController(viewCtrl, animated: true)
}
    PushToViewCtrlAfterPresent(viewCtrl)

注:这个两个方法建议写成全局方法,方便使用

期待你的评论建议O(∩_∩)O~

你可能感兴趣的:(iOS 获取当前导航控制器,进行页面跳转)