隐藏UITabBarController的tabBarItem,虽然能够显示相关的视图然而

问题描述:

我想创建一个导航为我的iPhone“选项卡式应用程序”,这将包括(显然)UITabBarControllerSWRevealViewController揭示侧菜单。隐藏UITabBarController的tabBarItem,虽然能够显示相关的视图然而

所有在我的应用程序观点必须有两个UITabBarController显示的UINavigationBar然而,这出现在左侧的菜单链接(通过SWRevealViewController处理)不得出现在UITabBarController

我左侧的菜单链接以这种方式处理:

import UIKit 

class MenuTableViewController: UITableViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.clearsSelectionOnViewWillAppear = false 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
     let selectedIndex = (indexPath as NSIndexPath).row + 1 // hardcoded for time being 
     let tabBarController = revealViewController().frontViewController as! UITabBarController 

     let navController = tabBarController.viewControllers![selectedIndex] as! UINavigationController 
     navController.popToRootViewController(animated: true) 

     tabBarController.selectedIndex = selectedIndex 
     revealViewController().pushFrontViewController(tabBarController, animated: false) 
    } 
} 

现在,我试图删除的链接的,我不希望在我的UITabBarController显示如下意见之一:

import UIKit 

class TabBarController: UITabBarController { 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     let index = 2 // hardcoded for time being 
     viewControllers?.remove(at: index) 
    } 
} 

,但如果我点击现在相关的左侧菜单中的链接,我得到一个NSRangeException index 2 beyond bounds [0 .. 1]错误(当然,因为我删除从UITabBarController特定tabBarItem)。

我的问题是:如何从UITabBarController“隐藏”该项目,但仍然可以从我的侧边菜单中引用它(并打开它)?

UPDATE
我此刻的故事板看起来像这样:enter image description here

+0

所以......你有''A' B''C'选项卡的标签栏控制器......当前标签是'B' ......你也有一个菜单列出'D''E''F''G' ...用户点击菜单上的'E' ...应该发生什么?当前标签'B'由* E替换*或者“A-B-C”标签变成“A-B-C-E”? – DonMag

+0

假设我有'A'' B'''''''''''观点。我只想在我的侧栏菜单中显示'A''B'' C'和'D'' E'。但是,'D'和'E'应该在打开TabBar后才可见。在我的故事板中,所有视图都与我的TabBar控制器相连,这样TabBar就可以看到它们,也许这是第一位的错误方法? – errata

它可能不是使用“菜单”操纵标签是一个好主意 - 那就是苹果公司设计了更多...和“编辑...”功能。

根据您的整体设计/导航/用户体验流程中,两个合理的选择应该是:

  1. 而是一个“取消”或替换当前选中的标签,.present一个模式视图控制器,的“保存“或”完成“按钮.dismiss它(无论是合适的)。

  2. 自从你状态的每个选项卡的视图控制器是一个NavigationController,可以.push菜单选择视图控制器到当前堆栈。然后你的界面可以使用标准的“<返回”按钮导航。

好运:)

+0

太棒了!谢谢澄清! – errata