方法一:根视图必须是 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~