从ios中的UITabBarController中删除标签栏的安全方法

Posted

技术标签:

【中文标题】从ios中的UITabBarController中删除标签栏的安全方法【英文标题】:Safe way to remove tab bar from UITabBarController in ios 【发布时间】:2014-04-14 19:45:50 【问题描述】:

我想使用 UITabBarController 但我不需要标签栏,因为我要从另一个视图控制器的菜单中切换标签。我想删除它,因为它永远不会被使用。我创建了一个 UITabBarController 的子类并输入了以下代码:

- (void)viewDidLoad

    [super viewDidLoad];

    [self.tabBar removeFromSuperview];

这样删除标签栏安全吗?

更新:为什么选择标签栏控制器?

Apple 建议尽可能使用标准容器视图控制器。我正在努力遵循这一点。我的屏幕工作流程与标签相同,只是它们是通过左侧菜单而不是标签栏切换的。

当我使用 UIViewController 并更改它的子视图控制器时,当自动布局无法正常工作时,我遇到了很多问题。

另一个原因是我想使用故事板,而不是从代码中创建转场,以便我可以轻松查看我的应用工作流程。

【问题讨论】:

也许你不应该使用标签栏控制器? 当你想切换视图时,你可以只使用 UIViewController 并更改它的子视图控制器。 感谢您的 cmets!我更新了我的问题,解释了为什么我要使用标签栏控制器 这行得通吗? ***.com/a/7524054/210171 tabBar.hidden = YES 运行良好。它永远隐藏栏,并且约束在横向和纵向模式下都有效。 【参考方案1】:

当您说不想使用它时,为什么要删除它。你可以带一个 tabbarcontroller 隐藏tabbar。我正在从底部自定义栏切换标签。

我正在做一个应用程序,它有一个包含三个项目的 tababr 控制器。我没有使用系统选项卡,而是在页脚处创建了一个自定义视图,例如选项卡,并且实际上将 tabbarController 的选项卡栏的 hidden 属性设置为 YES。

myTabBarController.tabBar.hidden = YES;

【讨论】:

【参考方案2】:

试试这个代码

[app.navigationController.view removeFromSuperview];
[app.tabbarcontroller.view removeFromSuperview];
[app.window addSubview:app.navigationController.view];
[app.navigationController popToRootViewControllerAnimated:YES];

【讨论】:

以上是关于从ios中的UITabBarController中删除标签栏的安全方法的主要内容,如果未能解决你的问题,请参考以下文章

iOS,UITabBarController 中的问题

UINavigationController 中的 UITabBarController 适用于 iOS 8 但不适用于 7

ios 6 中的 UITabBarController 旋转问题

iOS:在没有 UITabBarController 的情况下从用户界面实现 UITabBar

UITabBarController中的UITableViewController = iOS 11上不需要的填充

xamarin.ios 中的 UITabBarController 不使用 StoryBoard