如何在具有自定义选项卡 UI(不使用选项卡栏)的 UITabBarController 中删除“更多”选项卡

Posted

技术标签:

【中文标题】如何在具有自定义选项卡 UI(不使用选项卡栏)的 UITabBarController 中删除“更多”选项卡【英文标题】:How to remove "More" tab in UITabBarController that has custom tab UI (not using tab bar) 【发布时间】:2018-08-11 14:24:28 【问题描述】:

我使用UITabBarController 作为支持来呈现多个视图控制器,但我没有使用底部的默认选项卡栏让用户点击选项卡。相反,我从左侧展示了一个滑出式菜单,该菜单在表格视图中显示选项卡列表。因此,用户可以点击表格视图中的一个单元格并切换到该选项卡。这是在不使用UITabBarController 底部的标签栏的情况下显示多个视图控制器标签的非常常见的范例。

现在我添加了更多选项卡,我的一个选项卡打开到 UITabBarController 的“更多”控制器时遇到了问题。我不需要或不想要这个“更多”控制器,因为我在可滚动列表中显示我的选项卡,而不是在空间有限的选项卡栏中。

如何删除“更多”标签或告诉我的UITabBarController 不要显示“更多”屏幕?是否有一些选项可以禁用此功能?

【问题讨论】:

您不应将 UITabBarController 与汉堡菜单一起使用。在 ios 上没有开箱即用的解决方案,因此您应该创建自己的自定义 UIViewController 来处理此滑动视图并使用子视图控制器显示正确的控制器。你也可以找一个库,GitHub上有很多。 【参考方案1】:

解决方法:找到隐藏更多导航栏的正确时机。将这些代码添加到 UITabBarController 的子类中:

- (void)viewWillAppear:(BOOL)animated

    [super viewWillAppear:animated];

    if (self.viewControllers.count > 5)
    
        self.moreNavigationController.delegate = self;
    

在导航委托回调中:

- (void)navigationController:(UINavigationController *)navigationController
  willShowViewController:(UIViewController *)viewController
                animated:(BOOL)animated


   navigationController.navigationBarHidden = YES;

【讨论】:

以上是关于如何在具有自定义选项卡 UI(不使用选项卡栏)的 UITabBarController 中删除“更多”选项卡的主要内容,如果未能解决你的问题,请参考以下文章

如何从 UICollectionView 单元中引用选项卡栏控制器

如何从 UI 视图控制器呈现选项卡栏控制器

UI 选项卡栏控制器未显示设备上的所有选项卡。模拟器完美运行

仅使用一个视图控制器的具有多个选项卡的选项卡栏

如何在屏幕左侧排列 Tabbar

React-native-navigation 选项卡栏中心圆圈图标