【问题标题】:How to remove Tabbar Item in swift 3如何在swift 3中删除标签栏项目
【发布时间】:2017-12-22 21:39:15
【问题描述】:

我的 UITabbarController 中有 5 个 UIViewcontroller,但我需要在标签栏中显示其中的 4 个,所以我试图从 UITabbarController 中删除最后一个标签栏项目。

self.tabBarController?.tabBar.items?.removeLast()

但是我收到了这个错误。

直接修改标签栏控制器管理的标签栏是不行的 允许

那么如何从标签栏中删除最后一个标签栏项目?

【问题讨论】:

  • 看完你的评论后相信答案,我还是不明白你想要什么。

标签: ios swift swift3 uitabbarcontroller uitabbar


【解决方案1】:

要从 tabBarController? 中删除 ViewController,您应该简单地实现:

tabBarController?.viewControllers?.removeLast()

假设您删除了最后一个控制器(选项卡)。

viewControllers相关:

标签栏显示的根视图控制器数组 界面。

显然,您可以删除和控制器,例如,用于删除第一个控制器:

tabBarController?.viewControllers?.remove(at: 0)

更新:

首先我需要打开的第五个视图控制器,我不会在其中显示它 标签栏。用户无法进入第五个标签栏。只有我可以导航用户。所以导致 其中我正在尝试这样做。

为了实现这一点,您应该做的就是让故事板的结构如下:

考虑到第一个视图控制器(应该显示标签栏控制器的那个)是您不想让它出现在标签栏中的视图控制器。

【讨论】:

  • 我只需要从标签栏中删除最后一项而不是视图控制器
  • 请详细说明,如果标签栏中的最后一项已被删除,那么如何导航到它的视图控制器?默认情况下,从viewControllers 数组中删除视图控制器应该会自动删除它在标签栏中的项目。
  • 我不会再次浏览这个视图控制器。所以我只需要从 tabbar 中删除最后一项而不是 viewcontroller
  • @MuratKaya 没错!这就是为什么你应该从'tabBarController?.viewControllers?'中删除视图控制器的原因。并且标签栏将通过仅显示所需视图控制器的项目来显示它应该显示的内容。您是否尝试过实现它:)?
  • 首先我需要打开的第五个视图控制器,我不会在标签栏中显示它。用户无法进入第五个标签栏。只有我可以导航用户。因此,我正在尝试这样做。
【解决方案2】:

要删除您知道其引用或位置的标签栏项目,您可以这样做:

tabBarController?.viewControllers?.remove(at: 4)

【讨论】:

  • 请注意,如果 tabBarController?.viewControllers? 包含的视图控制器少于 5 个,应用程序将崩溃。
  • 正如我所说,如果您知道要删除的特定控制器的引用,您可以使用它。
【解决方案3】:

您应该在标签栏控制器中操作视图控制器数组。 试试这个。

if let tabBarController = self.tabBarController {
     let indexToRemove = 4
     if indexToRemove < tabBarController.viewControllers?.count {
         var viewControllers = tabBarController.viewControllers
         viewControllers?.remove(at: indexToRemove)
         tabBarController.viewControllers = viewControllers
     }
 }

【讨论】:

  • 不要复制,粘贴this answer,你应该评论它...
猜你喜欢
  • 2020-03-07
  • 1970-01-01
  • 1970-01-01
  • 2017-10-30
  • 1970-01-01
  • 1970-01-01
  • 2015-12-22
  • 2015-10-08
  • 2017-02-04
相关资源
最近更新 更多