我有一个TabView
,带有四个标签,它们看起来像这样:
例如,在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) {
}
也许答案很简单,但是我在这个领域还很陌生,并且努力做到这一点。预先感谢。
答案 0 :(得分:2)
该解决方案实际上很简单,只需跟踪以前选择的选项卡,并按照以下方法获取当前选项卡即可
override func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) {
}
检查currentTab == previousSelectedTab,如果是,则将导航控制器(currentTab.selectedViewController)弹出到根目录。它应该可以无缝运行。