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

UITabBarController中VC分段后导航栏丢失

UITabBarController是iOS开发中常用的控制器之一,用于实现底部标签栏导航。当在UITabBarController中使用分段控制器(UISegmentedControl)切换不同的视图控制器(ViewController)时,可能会导致导航栏丢失的问题。

导航栏丢失的原因是因为UITabBarController会覆盖掉每个子视图控制器的导航栏,导致在切换视图控制器时,导航栏无法正确显示。

解决这个问题的方法有两种:

  1. 在UITabBarController的子视图控制器中,通过以下代码来显示导航栏:
代码语言:txt
复制
self.navigationController?.setNavigationBarHidden(false, animated: false)

这样可以在每个子视图控制器中手动显示导航栏,确保导航栏在切换视图控制器时正确显示。

  1. 可以通过自定义UITabBarController来解决导航栏丢失的问题。具体步骤如下:
  • 创建一个继承自UITabBarController的子类,例如CustomTabBarController。
  • 在CustomTabBarController中重写viewDidAppear方法,并在该方法中添加以下代码:
代码语言:txt
复制
for viewController in self.viewControllers ?? [] {
    if let navigationController = viewController as? UINavigationController {
        navigationController.setNavigationBarHidden(false, animated: false)
    }
}

这样可以在每个子视图控制器的导航栏中显示导航栏。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云移动开发平台:https://cloud.tencent.com/product/mpp
  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云云原生容器服务(TKE):https://cloud.tencent.com/product/tke
  • 腾讯云数据库(TencentDB):https://cloud.tencent.com/product/cdb
  • 腾讯云人工智能(AI):https://cloud.tencent.com/product/ai
  • 腾讯云物联网(IoT):https://cloud.tencent.com/product/iotexplorer
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链服务(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云游戏多媒体引擎(GME):https://cloud.tencent.com/product/gme
  • 腾讯云视频直播(LVB):https://cloud.tencent.com/product/lvb
  • 腾讯云音视频处理(VOD):https://cloud.tencent.com/product/vod
  • 腾讯云安全加速(CDN):https://cloud.tencent.com/product/cdn
  • 腾讯云网络安全(SSL):https://cloud.tencent.com/product/ssl
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

设置导航的按钮并不是去设置导航本身。一切都是在被推入的UIViewController子类内部执行推入请求和相关导航的定制(如:右键按钮)。...UITabBarController类       选项卡类允许用户在多个视图控制器之间移动并在屏幕的底部可定制该。...一、创建UITabBarController 常见的在应用程序委托类的applicationDidFinishLaunching:方法创建,这通常可为应用窗口提供根视图。...当然在应用程序委托AppDelegate类创建UITabBarController,相当于创建了一个基于Tab Bar的工程项目。...不过,也可以视具体情况,我们直接在一个独立的视图控制器创建UITabBarController实例对象,如自定义一个用于视图 切换的控制器类ViewSwitcherViewController,就可在其中的

5K50

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

与子级VC分别有navigationController的情况,即不是使用push方式加载子VC,而是通过AddChildViewController的方式添加的场景,则父级导航条会覆盖在子级导航条上面...,所以需要在载入时把父级导航条做隐藏处理: 1.2 navigationItem         在含有导航条的ViewControllerVC的navigationItem与VC.navigationController...2.4.1 透明导航条 //透明导航 [self.navigationController.navigationBar setBackgroundImage: pressedColorImg forBarMetrics...: UIBarMetricsDefault]; 2.5 常见开发问题 2.5.1 tableView被导航遮挡 IOS开发---菜鸟学习之路--(二十四)-iOS7View被导航遮挡问题的解决 http...否则会导致页面切换时选中状态不准确         TabBar与导航条混用时,TabBarItem的设置是在NavigationController,而不是内容Controller,切记!!!

34520

iOS学习——获取当前最顶层的ViewController

在iOS开发过程,我们经常性会需要获取当前页面的ViewController,然后利用ViewController进行一些操作,例如在最顶层的ViewController上展示一个UIAlertController...在寻找的过程,要分别考虑当前ViewController是UITabBarController和UINavigationController的情况,同时还要考虑到当前ViewController是否通过...:[(UINavigationController *)vc topViewController]]; } else if ([vc isKindOfClass:[UITabBarController...class]]) { return [self _topViewController:[(UITabBarController *)vc selectedViewController]...作为导航结构,以及可能present出新的VC,其实如果用storyboard的方式写UI的话就很清晰,类似树的结构,再利用递归找到当前视图。

6.4K50

iOS小技能:适配安全区域距离(safeAreaInsets)

引言 应用场景1:自定义导航栏内容,导航显示公告和标题 应用场景2:自定义视图底部工具 应用场景3: 适配上拉加载更多控件 _vcView.tableView.mj_footer.ignoredScrollViewContentInsetBottom...但是如果一个view没有在视图层次结构或未在屏幕上显示, 则safeAreaInsets为0; 1.1 问题 视图底部工具显示到安全区域之外 1.2 判断安全区域距离 #define isIphoneX...} else { return NO; } } 定义相应宏 ///*状态导航总高度...; NSLog(@"导航高度:%f",navHeight); //获取tabBar的高度 //1.在tabBarController中使用(你的继承自UITabBarControllerVC) CGFloat...///*状态导航总高度*/ #define kStatusBarHeight (CGFloat)(isIphoneX?

3.5K30

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

2 使用 2.1 结合xib使用     思路:         APP跳转流程在故事板呈现,但是VC的事件处理与详细视图设计放在xib文件。     ...具体实现方法:          例如,在故事板Level1VC添加一个按钮,然后将level2VC拖入故事板,按住cmd键,鼠标点击按钮并拖入level2VC,在弹出的菜单中选择show事件,即完成了从...与之相仿,在 NavigationController 所包含的ViewController上,有一个 NavigationItem 对象,可用于设置导航。...3.1.3 在故事板中进行布局设计时,如果有导航、Tab,必须也要把高度预留出来 iPhone iPad各种控件默认高度 http://blog.csdn.net/chengyakun11/article...4.2 代码实例化故事板VC 如何装载Storyboard的ViewController?

78430

iOS项目——基本框架搭建

项目开发过程,在完成iOS项目——项目开发环境搭建之后,我们首先需要考虑的就是我们的项目的整体框架与导航架构设计,然后在这个基础上考虑功能模块的完成。...一 导航架构设计   一款App的导航架构设计应该是符合人们的操作惯性和方便操作的特点,也应该在交互上更加合理和人性化。...根据项目功能和定位不同,不同的App的导航设计应该采用不同的技术框架,目前比较常见的导航框架主要有标签式、列表式、矩阵式三大类,如下图,具体每一类的特点及详情可以参见:再谈App导航设计。 ?...// [self addChildViewController:@[vc0,vc1,vc2,vc3]]; } 二 开发过程中注意代码重构  在开发过程,我们最好不要重复写相同的代码,...在我们前面添tabBar item的代码中就存在大量重复性的代码,所以我们需要对其进行重构,将重复性的代码进行抽取,将不同的内容设置成参数进行自定义设置,重构的逻辑如下: @implementation

1.8K80

iOS多控制器之UINavigationController&UITableBarController1. 多控制器2. UINavigationController3. UITableBarCont

Paste_Image.png 2.5 修改导航的内容 导航的内容由栈顶控制器的navigationItem属性决定 UINavigationItem有以下属性影响着导航的内容 //左上角的返回按钮...UINavigationController保存子控制起的形式:栈 获取UINavigationController下面的所有的子控制器:viewControllers / childViewControllers 导航按钮使用原始图片不进行系统渲染...UITableBarController UITabBarController和UINavigationController类似,UITabBarController也可以轻松地管理多个控制器,轻松完成控制器之间的切换...Paste_Image.png 7.2.3 往UITabBarController添加子控制器 有两种方法UITabBarController添加子控制器 : [tb addChildViewController...:c1]; tb.viewControllers=@[c1,c2,c3,c4]; 注意:展示的顺序和添加的顺序一致,和导航控制器不同,展现在眼前的是导航控制器的根视图控制器也就是第一个添加到导航控制器上的视图

1.2K40

iosUINavigation和UITabBar的结合

基本现在常见的应用里单一使用Navigation导航或者单独使用TabBar的情况已经不多见了,除非是特别专一的应用方式,否则常常会见到两种布局方式结合起来,自己在做第一个项目的时候也是遇到了这个需求...ViewControllerTwo *two= [[ViewControllerTwo alloc]initWithNibName:@"ViewControllerTwo" bundle:nil]; //分别用导航控制器包装起来...UINavigationController *NavViewTwo = [[UINavigationController alloc]initWithRootViewController:two]; //初始化TabBar控制器 UITabBarController...*tabBar = [[UITabBarController alloc]init]; //把两个导航控制器添加到TabBar控制器中去 [tabBar setViewControllers...此外,导航的标题可以在各个页面自行设置,比如在viewDidload方法,如下: self.title = @"标题" 要设置各个界面的tab样式,可以在initWithNibName方法中加入如下代码

45110

iOS开发中标签控制器的使用——UITabBarController

iOS开发中标签控制器的使用——UITabBarController 一、引言         与导航控制器相类似,标签控制器也是用于管理视图控制器的一个UI控件,在其内部封装了一个标签,与导航不同的是...,导航的管理方式是纵向的,采用push与pop切换控制器,标签的管理是横向的,通过标签的切换来改变控制器,一般我们习惯将tabBar作为应用程序的根视图控制器,在其中添加导航导航在对ViewController...tabBar颜色相关: //设置渲染颜色,会影响选中字体和图案的渲染 @property(null_resettable, nonatomic,strong) UIColor *tintColor; //设置导航的颜色...@property(nullable, nonatomic,strong) UIColor *barTintColor; 设置背景图案: //设置导航背景图案 @property(nullable,...item宽度 @property(nonatomic) CGFloat itemWidth; //设置item间距 @property(nonatomic) CGFloat itemSpacing; 与导航类似

1.5K20

UITabbarController 偶现启动crash问题分析

问题背景 最近新版本发布,出现了一个偶现的crash并且迅速增加为Top1,这里对该问题做一个分析。...该问题在灰度有出现过,一位同事在排查过程,发现另外一个类似问题是在UITabBarController的 _viewControllerForTabBarItem:方法出现异常,这个问题量级并不大,场景类似但是没有特别信息帮助定位...多维分析 由于crash出现在系统的UITabBarController类,无法调试获取更多信息,逆向排查周期太长。这里可以通过Slardar的信息,结合日志和业务场景逐步缩小排查范围。...反向分析 当问题可以稳定复现,就可以进一步分析逻辑上的缺陷。 首先是vc的复用逻辑分析: App在启动时就要初始化tabbarVC,并且在后续会刷新底tab的数量。...这里写了一个复用的模拟代码: - (void)testAnotherTabbarVC { UITabBarController *anotherTabbarVC = [UITabBarController

79140

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

解决办法就是让动画完再做新的动画。     ...)(BOOL finished))completion NS_AVAILABLE_IOS(5_0);     (1)前面3种方法这里就不多说了,很常见的系统方法.至于第四种,我在前面文章-剖析网易标签的效果已经做了阐述...使用其中方法可以为UIView动画添加关键帧动画)     5.在动画结束我们必须向context报告VC切换完成,是否成功(在这里的动画切换,没有失败的可能性,因此直接pass一个YES过去)。...系统在接收到这个消息,将对VC状态进行维护。         接下来我们实现一个UIViewControllerTransitioningDelegate,应该就能让它工作了。...在新版的Safari,我们甚至可以用相同的手势来完成网页的后退功能(所以很大程度上来说屏幕底部的工具成为了摆设)。

39230

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

引 现如今很多App的一些模块,尤其是个人中心模块,界面设计已经习惯于不保留导航,而是直接将界面背景覆盖到状态,比如QQ的个人信息界面: 没有传统的导航之后会好看很多,但是回到或者去往别的页面时...本文只讲最简单的实现方式,在单纯的UINavigationController下是表现ok的,但是如果同时还涉及到UITabbarController,就会有一些瑕疵,下面是要实现的效果,可以观察一下瑕疵在哪...: 实现: 要实现这个简单的有无导航过渡其实很简单,直接在 viewWillAppear 和 viewWillDisappear 方法导航进行显示和隐藏就可以了,为了到达比较平滑的效果,建议对是否动画的参数选择...YES,否则显示界面就会瞬间出现导航,而达不到平滑的效果。...这个方法是直接隐藏了整个导航,所以如果要保存导航的一些返回按钮以及其他自定义的按钮,就需要自己在界面上去模拟添加,如果不想这么麻烦,也可以不隐藏导航,而是将导航的背景视图设为透明的: [

3.8K30

iOS 知识小集(Status Bar变换)

背景 iOS 中经常会有需要在某个界面改变状态颜色或者某个界面隐藏状态的需求。而改变状态颜色和控制状态显示和隐藏的API,在iOS 的不同版本也发生了很多变化。...iOS 7以前 在iOS 7之前,状态是不占视图位置的。每个控制器的根view都是从屏幕的Y轴20px处开始显示的。...iOS 7以前状态设置 从API来看,那时候也是支持在代码里修改状态的样式以及显示和隐藏的。只是因为状态对整个APP的影响不大,所以一般在plist里设置好,用不着再去修改了。 ?...API iOS 7 ~iOS 9 从iOS 7开始系统风格大变样,图标扁平了,状态也不在闹独立了。因为状态的会受到导航或者View背景色的影响,所以状态的风格也需要实时调整了。...但是使用UITabBarController依然正常,状态不受UITabBarController影响。

1.3K21
领券