2017-07-18 79 views
1

的TabBar项目我在我的UITabBarController 5 UIViewController的,但我需要他们的表演4的TabBar所以我想去年的TabBar项目从的UITabBarController删除。如何删除SWIFT 3

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

但我得到这个错误。

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

那么,怎样才能从我删除的TabBar最后的TabBar项目?

+0

后,我看了您的评论认为答案,我窗台不明白你想要什么。 –

回答

0

你应该操纵viewcontrollers中的TabBar控制器的阵列。 试试这个。

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

而不是复制,粘贴[这个答案](https://stackoverflow.com/a/28384731/5501940),你应该评论它... –

+0

我想,但我不具备足够的代表。 –

1

对于从tabBarController?删除视图控制器,你应该简单地实现:

tabBarController?.viewControllers?.removeLast() 

假设您删除了最后一个控制器(标签)。

它与viewControllers

由选项卡栏 界面中显示的根视图控制器的数组。

很明显,你可以删除和控制,例如,用于去除第一控制器:

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

更新:

首先,我需要开放第五视图 - 控制我会不 的TabBar表现出来。用户不能去第五个标签栏。只有我可以导航用户。因此造成的,我试图做到这一点 。

为了实现这一点,你应该做的是让你的故事板被构造为:

enter image description here

考虑到第一个视图控制器(应该呈现的TabBar控制器中的)你不想让它出现在的TabBar视图控制器。

+0

我只需要从tabbar –

+0

删除最后一项不viewcontroller请详细说明,如果从tabbar的最后一项已被删除,那么您如何导航到其viewcontroller?默认情况下,从viewControllers数组中删除一个视图控制器应该自动删除它在tabbar中的项目。 –

+0

我不会再次浏览此视图控制器。所以我只需要从tabbar删除最后一项不viewcontroller –

0

要移除标签栏项目,其中你知道的参考或位置,你可以这样来做:

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

请注意,如果'tabBarController?.viewControllers?'包含少于5个视图控制器,应用程序将会崩溃,那么在没有任何检查的情况下实现这种操作是有点危险的。 –

+0

正如我所说,如果你知道你正在删除的特定控制器的引用,你可以使用它。 –