重新选择 UITabBar 项目时防止弹出视图
Prevent popping views when reselecting UITabBar item
我有一个扩展 UITabBarController
的 UITabBar
class,在它上面我有 3 个 UINavigationController
,每个都有自己的 rootController。然后在第一个上我推额外的 UIViewController
。当我更改选项卡时,一切正常,在每个视图上都有应该存在的东西。
当我在第一个选项卡上然后再次单击同一个选项卡时,就会出现问题。当我这样做时,出于某种原因,推送到它上面的视图会弹出回 rootView。
有人对如何防止这种情况有任何建议吗?
我接受 swift 或 objective c 中的建议。
你可以试试这个,当你 select 它显示根的同一个选项卡时,作为默认的选项卡栏,所以实现这个委托 UITabBarControllerDelegate
//
class TabBarController: UITabBarController , UITabBarControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
self.delegate = self
}
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
return tabBarController.selectedIndex != tabBarController.viewControllers?.index(of: viewController)
}
}
我有一个扩展 UITabBarController
的 UITabBar
class,在它上面我有 3 个 UINavigationController
,每个都有自己的 rootController。然后在第一个上我推额外的 UIViewController
。当我更改选项卡时,一切正常,在每个视图上都有应该存在的东西。
当我在第一个选项卡上然后再次单击同一个选项卡时,就会出现问题。当我这样做时,出于某种原因,推送到它上面的视图会弹出回 rootView。
有人对如何防止这种情况有任何建议吗?
我接受 swift 或 objective c 中的建议。
你可以试试这个,当你 select 它显示根的同一个选项卡时,作为默认的选项卡栏,所以实现这个委托 UITabBarControllerDelegate
//
class TabBarController: UITabBarController , UITabBarControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
self.delegate = self
}
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
return tabBarController.selectedIndex != tabBarController.viewControllers?.index(of: viewController)
}
}