隐藏UITabBarController的tabBarItem,虽然能够显示相关的视图然而
我想创建一个导航为我的iPhone“选项卡式应用程序”,这将包括(显然)UITabBarController
和SWRevealViewController
揭示侧菜单。隐藏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
“隐藏”该项目,但仍然可以从我的侧边菜单中引用它(并打开它)?
它可能不是使用“菜单”操纵标签是一个好主意 - 那就是苹果公司设计了更多...和“编辑...”功能。
根据您的整体设计/导航/用户体验流程中,两个合理的选择应该是:
而是一个“取消”或替换当前选中的标签,
.present
一个模式视图控制器,的“保存“或”完成“按钮.dismiss
它(无论是合适的)。自从你状态的每个选项卡的视图控制器是一个NavigationController,可以
.push
菜单选择视图控制器到当前堆栈。然后你的界面可以使用标准的“<返回”按钮导航。
好运:)
太棒了!谢谢澄清! – errata
所以......你有''A' B''C'选项卡的标签栏控制器......当前标签是'B' ......你也有一个菜单列出'D''E''F''G' ...用户点击菜单上的'E' ...应该发生什么?当前标签'B'由* E替换*或者“A-B-C”标签变成“A-B-C-E”? – DonMag
假设我有'A'' B'''''''''''观点。我只想在我的侧栏菜单中显示'A''B'' C'和'D'' E'。但是,'D'和'E'应该在打开TabBar后才可见。在我的故事板中,所有视图都与我的TabBar控制器相连,这样TabBar就可以看到它们,也许这是第一位的错误方法? – errata