首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Swift中,如果我有一个UITabBarController,如何在切换选项卡之前popToRootViewController我当前的navigationController?

在Swift中,如果你有一个UITabBarController,并且想在切换选项卡之前将当前的navigationController的视图控制器栈回到根视图控制器,你可以使用以下方法:

  1. 首先,获取当前选中的导航控制器:
代码语言:txt
复制
if let navigationController = tabBarController.selectedViewController as? UINavigationController {
    // 在这里执行popToRootViewController操作
}
  1. 然后,调用导航控制器的popToRootViewController方法:
代码语言:txt
复制
navigationController.popToRootViewController(animated: false)

这将会立即将导航控制器的视图控制器栈回到根视图控制器,并且不会有过渡动画。

完整的代码示例:

代码语言:txt
复制
if let navigationController = tabBarController.selectedViewController as? UINavigationController {
    navigationController.popToRootViewController(animated: false)
}

这样,在切换选项卡之前,你就能够将当前导航控制器的视图控制器栈回到根视图控制器了。

注意:以上代码示例假设你的UITabBarController的选中视图控制器是UINavigationController或其子类。如果你的UITabBarController的选中视图控制器不是UINavigationController,你需要根据实际情况进行相应的类型转换。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Cocoa编程中视图控制器与视图类详解

;   提示:UIViewController 一个属性是navigationController如果当前ViewController某个NavigationController堆栈 的话(即是被推送过来...UITabBarController类       选项卡类允许用户多个视图控制器之间移动并在屏幕底部可定制该栏。...一、创建UITabBarController 常见应用程序委托类applicationDidFinishLaunching:方法创建,这通常可为应用窗口提供根视图。...[window addSubview:tabBarController.view];   当然应用程序委托AppDelegate类创建UITabBarController,相当于创建了一个基于...不过,也可以视具体情况,我们直接在一个独立视图控制器创建UITabBarController实例对象,自定义一个用于视图 切换控制器类ViewSwitcherViewController,就可在其中

5K50

iOS导航栏切换界面时隐藏和显示

,往往又需要重新显示导航栏,关于这样一种设计苹果并没有给出专门设置,需要我们自己来做,但在尝试了多种方法之后其实也没有很好方法,QQ其实做挺好如果你现在动手去尝试一下,会发现它有无导航栏转换之间一个渐变毛玻璃效果...本文只讲最简单实现方式,单纯UINavigationController下是表现ok,但是如果同时还涉及到UITabbarController,就会有一些瑕疵,下面是要实现效果,可以观察一下瑕疵在哪...setNavigationBarHidden:NO animated:YES]; } 但是如果选择了动画隐藏,通过Tabbar切换模块时就会出现一个很快隐藏导航栏动画,这个很烦,尝试了很多方法...]; self.navigationController.navigationBar.shadowImage = [UIImage new]; 但是切换到要显示导航栏界面时,我们还需要将透明导航栏背景还原回来...这里一篇文章实现了:传送门:导航栏平滑显示和隐藏 - 个人页自我修养(1) ,不过作者使用swift实现,用到了extension,其实也就是OC下category,之后再研究一下OC下实现好了

3.8K30

大前端开发路由管理之四:iOS篇

3、多页面栈管理方法         了上文铺垫,接下来可以更加细致地介绍iOS多页面栈管理方法。正如之前提到,多页面即多个View。...而点击应用上方NavigationBar返回按钮(如果没有隐藏起来的话)就会pop当前ViewController,也就是返回上一层。...一张图概括NavigationController结构 3.2 通用页面切换方式         容器类ViewController通过一个特定结构来实现多层级管理,但并不是所有页面都能确保是一个容器...,给他赋予一个NSString值,会让ViewControllerApp被放到后台之前完成编码(保存)。...如果自己实现一个容器类ViewController,就需要自己去给子视图控制器编码,保证每一个都必须是独一无二 restorationIdentifier。

1.8K40

UI篇-UITabBar及其相关其他知识

Paste_Image.png UITabBar 下方工具条称为UITabBar ,如果UITabBarControllerN个子控制器,那么UITabBar内部就会有N 个UITabBarButton...在上面的程序UITabBarController4个子控制器,所以UITabBar中有4个UITabBarButton,UITabBar结构⼤大致如下图所示: ?...selectedViewController属性 通过该属性可以获得当前选中viewController 每个视图控制器都有一个tabBarController属性,通过它可以访问所在UITabBarController...每个视图控制器都有一个tabBarItem属性,通过它控制视图UITabBarControllertabBar显示信息。...self.hidesBottomBarWhenPushed = YES; } //如果在push跳转时需要隐藏tabBar,需要在最外层VC跳转之前设置 // block 回调跳转 需要紧紧写在跳转前后

1.9K20

Ios常用第三方框架(二)

比如,之前要实现一个填写各种资料列表,可能需要很多代码,现在只需要几行代码就可以实现。 UIScrollSlidingPages - 允许添加多视图控件,并且可以横向滚动。...LxTabBarController - 改变了原生tabbar切换tab时生硬效果,并加入滑动切换手势(和界面上其它手势发生冲突风险,可根据具体项目予以关闭),swift版本。...WXTabBarController - 系统 UITabBarController 基础上完美实现了安卓版微信 TabBar 滑动切换功能,单手操作 iPhone 6 Plus 切换 TabBar...MGSwipeTableCell - 另一个常见于很多应用UI组件,苹果应该考虑标准iOS SDK中加入一些类似的内容。Swipeable表格cell是这个pod最佳描述,也是最好。...SwipeViewController.swift - 一款好用页面滑动和标签选项卡类库及示例。

7.6K60

VCTransitionsLibrary –自定义iOS交互式转场动画

简介 VCTransitionsLibrary 提供了许多适用于入栈,出栈,模态等场景下控制器切换转场动画.它本身提供了一个定义好转场动画库,你可以拖到自己工程中直接使用;也提供了许多拥有不同转场动画效果...使用 自定义转场动画时,两类关键类: 动画控制器 –  这个类是用来实现自定义动画.但你声明想要使用自定义动画时,你应该提供一个动画控制器.这个类会实现需要动画,完成时会通知框架....自定义顶部导航转场动画 UINavigationController 一个 id delegate 属性.只需要让它代理通过 navigationController...UITabBarController 一个 id delegate属性,只需要让它代理通过tabBarController: animationControllerForTransitionFromViewController...,比如可以让用户通过手势来控制页面间导航.交互控制器允许用户一个转场动画中前进,后退,甚至退出.

1.5K60

【IOS开发基础系列】Storyboard专题

1 简介 1.1 故事板简介         如果 app 大量窗口,故事板能帮你减少许多用于从一个窗口转到另一个窗口导航代码。...运行程序,现在第一个 Tab 已经变成了NavigationController。         我们将实际功能加入 app 之前,让我们整理一下我们故事板。...与之相仿, NavigationController 所包含ViewController上,一个 NavigationItem 对象,可用于设置导航栏。...前者更为简单,因此使用了前者。 注意:如果你事先无法确定 cell 高度,或者你不同高度几种 cell,你应该使用heightForRowAtIndexPath。         .../details/7565690 3.1.4 一个VC继承自另一个VC,对于父类View,如果子类初始化时想不一样大小,如何在故事板处理 4 开发技巧 4.1 View分辨率 4.1.1 wAny和

73130

【IOS开发基础系列】Navigation页面导航专题

navigationItem并不是同一个对象,如下图所示。...: (UIViewController*) viewController animated: (BOOL)animated{     //如果进入当前视图控制器     if (viewController...    方法一:(自定义视图方法,一般人也会采用这样方式)         就是导航向上添加一个titleView,可以使用一个label,再设置label背景颜色透明,字体什么设置就很简单了...否则会导致页面切换时选中状态不准确         TabBar与导航条混用时,TabBarItem设置是NavigationController,而不是内容Controller,切记!!!...2.5.8 Tabbar显示与隐藏 Tabbar隐藏函数,其实只Nav Push之前调用时起作用 //隐藏Tabbar [viewController setHidesBottomBarWhenPushed

33020

Android仿新版微信浮窗效果

新版微信中,可以把浏览文章缩小为浮窗.点击浮窗继续阅读.对于经常在微信里阅读的人来说,这简直就是人类之光. 微信效果如下 ? 微信效果 对于这功能进行了仿写. 效果如下 ?...仿写效果 微信大佬一定用了了不起技术,这里只是实现效果....简单写了一个库,一句代码即可实现效果 github.com/SherlockQi/… //AppDelegate中将类名传入即可 [HKFloatManager addFloatVcs:@[@"HKSecondViewController...#import “HKFloatManager.h” //AppDelegate中将类名传入即可,该类控制器侧滑返回时启动浮窗功能(需要在实例化导航控制器之后) [HKFloatManager...以上所述是小编给大家介绍Android仿新版微信浮窗效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家。在此也非常感谢大家对ZaLou.Cn网站支持!

86920

iOS初步集成极光推送后你还要做这些事

、Sound、Alert三种类型可以选择设置 } 上面代码选择了一个提示第三方TSMessage点击消息时候做了一个跳转。...调用这个三方时候你首先要获取当前顶层控制器赋值给这个三方。...,当你跳转指定控制器时候,你必要判断当前控制器是否可以push过去,即有没有导航栏,如果没有则不能push,当然也可以像我这样先跳转到个人中心,保证导航栏,但是这样处理也许不适用你app....自定义消息,这个比较特殊,它必须是app正在前台时候才能收到消息,收到消息位置而且不在代理,而是一个通知。 ? 当注册极光后可以加入下面代码。注册一个通知。...○ 怎么app内部开启、关闭通知? 一般都在app设置中有一个switch开关。来开启关闭通知,代码很简单,直接贴上来。一点需要注意,就是这个开关状态需要存到本地,高要求存服务器。

2.8K50

iOS小技能:设置状态栏背景颜色(图片)

补充:如果整个项目的状态栏(电池栏)都是颜色,并且都是不透明,上面这个方法完全可以应付。...但是如果有状态是透明或者半透明效果,上面这个方法还是不能胜任,越透明越明显;经过一番查找,终于发现问题: 问题: 1、iOS 13之前,可以通过valueForKey 获取UIApplication...方法很多,方法代码如下:使用 static 配合 gcd HSSingletonM(QCTStatusBarTool); + (void)setStatusBarBackgroundColor4ios13...; NSLog(@"导航栏高度:%f",navHeight); //获取tabBar高度 //1.tabBarController中使用(你继承自UITabBarControllerVC) CGFloat...中使用 UITabBarController *tabBarVC = [[UITabBarController alloc] init];//(这儿取你当前tabBarVC实例) CGFloat tabBarHeight

1.7K40

iOS项目——基本框架搭建

TabBar + NavigationController就是应该TabBar上添加itemBar,每一个itemBar都是一个独立模块,并且每一个itemBar都对应一个NavigationController...今天我们主要任务就是搭建我们TabBar,如果采用系统自带UITabBarController(官网文档戳这里),使用过程一下几点需要注意: 每一个barItem都必须对应一个ViewController...如果自定义设置了,注意不要遮挡最下面的TabBar条 barItem顺序与添加到UITabBarController顺序保持一致 当添加barItem个数 <= 5个时,均匀分布最下面的bar条上...,因此,开发过程,我们需要对我们代码进行重构和简化,主要原则是尽量保持一个方法实现一个功能,然后尽量不写重复代码,精简逻辑。...: // 字典中用到key 1.iOS7之前(UIStringDrawing.h可以找到) - 比如UITextAttributeFont\UITextAttributeTextColor - 规律

1.7K80

iOS开发常用之网络

该项目通过三种形式展示页面之间切换,比如导航栏上多个选项卡切换,页面左右两端箭头指示切换,以及使用分段控件。...LxTabBarController - 改变了原生tabbar切换标签时生硬效果,并加入滑动切换手势(和界面上其它手势发生冲突风险,可根据具体项目予关闭),swift版本。...WXTabBarController - 系统UITabBarController基础上完美实现了安卓版微信TabBar滑动切换功能,单手操作iPhone 6 Plus切换TabBar一直是一件很痛苦事情...SwiftyFORM - swift表单输入框架(亮点是表单验证规则引擎),是见过地最易用Swift表单组件。...更赞是额外附了详细开发教程如何在Swift制作Tinder-Like Koloda动画网页链接 .Yalantis出品动画程序款款精品。

23.5K10

如何判断UITabBarControllerNavigationController没有被选中?

https://blog.csdn.net/u010105969/article/details/53120115 最近在看《百思不得姐》这个项目,其中有一个功能:某个页面再次点击此页面的tabBarButton...首先要判断点击tabBarButton是否已经被选中,如果被选中,则再次点击会刷新页面。...这里一个问题,每次重复点击某个tabBarButton时候都会发出通知,而tabBarController上所有navigationController都要接收此通知,从而进行页面的刷新。...这也与本篇博客题目相呼应:如何判断UITabBarControllerNavigationController没有被选中?......");     }else{ NSLog(@"当前控制器被选中");     } } 代码很简答,可之前却没有想到。

77410

【IOS开发基础系列】UIViewController专题

(,UINavigationController, UITabBarController)动画没做完,然后又开始新动画.。...3.1.4 Demo         还是那句话,一百行讲解不如一个简单小Demo,于是..it’s demo time~ 整个demo代码放到了github这个页面上,需要朋友可以参照着看这篇文章...现在SDK如果当前VC是被显示的话,这个消息会被直接转发到显示它VC去。但是这并不是一个实现,违反了程序设计哲学,也很容易掉到坑里,具体案例可以参看这篇文章评论。         ...我们在手势识别只需要告诉这个类实例当前状态百分比如何,系统便根据这个百分比和我们之前设定迁移方式为我们计算当前应该UI渲染,十分方便。...刚才demo基础上,这次我们用一个向上划动手势来吧之前呈现ModalViewController给dismiss掉~当然是交互式切换,可以半途取消那种。

35130

iOS 自定义 ViewController 过渡动画

view controller transitions 可交互过渡,例子就是 NavigationController 详细页面从屏幕左侧滑入以返回时那个动画。...两个方法需要实现 // 这个方法负责做真正动画,输入参数是过渡上下文,从哪个VC过渡到哪个VC这些东西都可以从它得到。...然后 viewDidLoad 设置 TabBarController delegate ,这里我们设置成为 self TabBarController 代码如下: class MainVC: UITabBarController...那样切换时改变状态栏颜色,这里可选,与过渡无关 func tabBarController(tabBarController: UITabBarController, didSelectViewController...并且开始时path设置为上面的start——位置点击tab上一个半径为0圆。 // 下文中就要给这个path加特技,让他变化到包含整个界面那么大。

1.3K30

【iOS】仿知乎日报,RxSwift-Part1-首页搭建

因此,原来基础上,做了一些优化,虽然转模型上没有那么优雅,但是比原来安全。...然后tabbarVC添加两个控制器,一个为首页,一个为其他话题,然后隐藏tabbar,通过侧栏点击切换。如下图所示: ? 整体框架 首页搭建 1、导航栏设置 先来看看效果图: ?...tableViewwillDisplay方法,监听section变化,刷新条件是:当滚动到最后一个section一个元素时,加载更多数据 func tableView(_ tableView...那么针对上拉刷新,是这样封装MPApiService服务层,定义了如下方法: func loadMoreHomeNewsList(date: String) -> Observable<MPStoryListModel...其实也这么觉得,初入RxSwift,不打算封装太多层,怕把自己绕进去了,所以就先这样写了~ 4、设置导航栏titile日期 效果说明:随着列表滚动,sectionHeader日期会显示导航栏上

2.3K10
领券