这个标签栏控制器应该嵌入在哪里?

Posted

技术标签:

【中文标题】这个标签栏控制器应该嵌入在哪里?【英文标题】:Where should this tab bar controller be embedded? 【发布时间】:2021-12-30 03:44:15 【问题描述】:

这个项目的初始视图控制器是一个导航控制器。我想在用户登录后稍后在视图层次结构中的视图控制器上显示选项卡栏控制器。

当我在希望打开的视图控制器上嵌入一个选项卡栏控制器时,我以编程方式实现的导航栏会被一个新的导航栏项目覆盖,当按下该项目时,会引导用户返回登录页面。

这是导航栏的代码。

self.navigationController.navigationBar.tintColor = [UIColor whiteColor];

//Changes The Title Color
[self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:NSForegroundColorAttributeName]];

//Sets The Navigation Controller Font
[self.navigationController.navigationBar setTitleTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[UIColor whiteColor], NSForegroundColorAttributeName,
[UIFont fontWithName:@"ArialMT" size:12.0], NSFontAttributeName,nil]];
[[UINavigationBar appearance] setBarTintColor:UIColorFromRGB(0x0080ff)];

self.navigationController.navigationBar.translucent = YES;

self.navigationItem.leftBarButtonItem = btnRefresh;

//
self.navigationItem.rightBarButtonItem = btnCompose;

以下是应该如何在视图控制器上实现导航栏:

当标签栏控制器嵌入到我希望它打开的视图控制器中时会发生以下情况:

在此视图控制器上显示标签栏控制器以保留现有导航栏的正确方法是什么? Apple 关于 Tab Bar Controllers 的文档似乎很广泛,似乎应该以编程方式实现。

【问题讨论】:

【参考方案1】:

根据 Apple 文档,不应将 TabBarController 推送到 UINavigationController。相反,您可以使用 UITabBar 和 UITabBarDelegate 来获得相同的效果。您可以参考以下文档链接。

https://developer.apple.com/documentation/uikit/uinavigationcontroller/1621887-pushviewcontroller

【讨论】:

我在 UITabBars 上找到了这个答案。 ***.com/questions/11432954/… 我只希望 UITabBar 出现在项目中的一些视图控制器上。是否必须在 appdelegate.m 中设置为根视图?

以上是关于这个标签栏控制器应该嵌入在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

如何从标签栏控制器执行 show segue?

如何导航到嵌入在标签栏控制器中的视图控制器

如何在 Swift 的标签栏项目中设置图像?

如何将导航控制器嵌入到标签栏控制器

以模态方式将嵌入在导航控制器中的视图控制器与标签栏控制器分开

Swift:以编程方式嵌入标签栏控制器后,导航栏消失