我的故事板是这样安排的。
红色:搜索到...
橙色:嵌入了...
绿色:视图控制器的导航控制器
我想让我的中间选项卡视图(绿色)呈现自己的模式,有点像reddit应用程序如何做它的中间‘张贴到reddit’按钮。当这个中间视图被取消时,将返回到先前打开的原始选项卡。如何才能做到这一点呢?
一种方法是...
给第二个选项卡UINavigationController
一个Storyboardid--比如“CreateItemsNavController”--然后在自定义选项卡栏控制器类中实现ShouldSelect
。
如果选择了第二个选项卡(选项卡与所有数组一样,都是从零开始的),则实例化您的“CreateItemSnavController”并显示它,返回shouldselect
false
:
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
guard let indexOfTab = viewControllers?.firstIndex(of: viewController) else {
return true
}
if indexOfTab == 1 {
if let vc = storyboard?.instantiateViewController(withIdentifier: "createItemsNavController") as? UINavigationController {
present(vc, animated: true, completion: nil)
}
return false
}
return true
}
如果你要走这条路,你也可以(这可能是一个好主意)用一个空白的视图控制器替换你的故事板中的选项卡连接...因为您可能希望避免由选项卡栏控制器加载它,即使您从不允许激活该选项卡。
作为附带说明:这可能是一个非常混乱的UX。用户(和苹果)喜欢符合常见界面动作的应用程序。由于用户熟悉选项卡栏,选择一个选项卡按钮就会切换到该选项卡,因此以这种方式更改功能可能会受到欢迎。
当然,这是你的应用程序,还有你的设计选择...