TabView选中的选项卡单击

时间:2020-04-13 11:00:14

标签: ios swift swiftui

我有一个TabView,带有四个标签,它们看起来像这样:

enter image description here

例如,在Search标签上,用户可以搜索产品(以List表示),然后单击产品(简单的NavigationLink)以打开更多信息(ProductInfoView )有关该产品的信息(注意Search标签将保持选中状态)。

所以我的问题是:

如果用户再次点击仍处于选中状态的Search标签,如何弹出或关闭ProductInfoView并返回到Search标签?

Facebook具有相同的功能。还要注意:单击未选择的选项卡将关闭ProductInfoView并显示我刚刚选择的选项卡,但是在Search打开的情况下在这种情况下再次单击已选择的选项卡ProductInfoView不会做任何事情。 / p>

我在这里找到了类似的答案: SwiftUI: How to pop to Root view

可能我可以实现该解决方案,但是我没有找到一种方法来检测用户是否已经选择了tabItem。我知道UITabBarController具有可以做到的功能:

override func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) {    
}

也许答案很简单,但是我在这个领域还很陌生,并且努力做到这一点。预先感谢。

1 个答案:

答案 0 :(得分:2)

该解决方案实际上很简单,只需跟踪以前选择的选项卡,并按照以下方法获取当前选项卡即可

override func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) {

}

检查currentTab == previousSelectedTab,如果是,则将导航控制器(currentTab.selectedViewController)弹出到根目录。它应该可以无缝运行。