我有一个5选项卡TabBarController,其中selectedIndex = 2(第3个TabBarItem)是一个嵌入在NavigationViewController中的全屏相机,其标签栏和导航栏分别通过self.tabBarController?.tabBar.isHidden = true
和self.navigationController?.isNavigationBarHidden = true
隐藏。
我在相机预览图层上显示了一个UIButton;目前,我正在实施self.tabBarController?.selectedIndex = 0
以导航回第一个TabBarItem。
我需要什么:如何存储最后一个selectedIndex(在选择Camera选项卡之前),以便在初始化相机之前UIButton将用户返回到最后一个TabBarView?
请记住,相机由TabBarItem(selectedIndex = 2)呈现,因此它不会在顶部显示模态视图。
逻辑示例:
VC1> VC3(相机)>选择UIButton> VC1
VC2> VC5> VC3(相机)>选择UIButton> VC5
另外,我在我的TabBarController(使用UITabBarControllerDelegate子类)中实现了以下功能来记录selectedIndex。
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
print("The previous tab was index \(selectedIndex)")
}
答案 0 :(得分:1)
最简单的解决方案是将UserDefaults
中的索引保存在五个viewWillDisappear
的{{1}}中,然后在点击按钮导航到该索引时将其检索
答案 1 :(得分:0)
(代表OP发布)。
感谢我的建议,我能够使这个过程发挥作用。实施代码如下:
在TabBarController中
overrride fun tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
print("the previous tab was index \(selectedIndex)")
UserDefaults.standard.set(selectedIndex, forKey: "previousTab")
UserDefaults.standard.synchronize()
}
在CameraViewController上的UIButton中
@IBAction func exitCamera(_ sender: UIButton) {
if let lastTab = UserDefaults.standard.string(forKey: "previousTab") {
self.tabBarController?.selectedIndex = Int(lastTab)!
DispatchQueue.main.async {
self.stopCaptureSession()
}
}
}
到目前为止,它的作用就像一个魅力! : - )