У меня сработало нижеприведенное. Этот код в swift 3:
1> подкласс UITabbarController и реализуйте два метода ниже с одним iVAr:
class MyTabBarController: UITabBarController ,UITabBarControllerDelegate {
var previousSelectedTabIndex : Int = -1
}
2> установить делегат панели вкладок в viewdidLoad
override func viewDidLoad() {
super.viewDidLoad()
self.delegate = self // you must do it}
func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
self.previousSelectedTabIndex = tabBarController.selectedIndex
}
func tabBarController(_ tabBarController: UITabBarController,
shouldSelect viewController: UIViewController) -> Bool {
if self.previousSelectedTabIndex == tabBarController.selectedIndex {
let nav = viewController as! UINavigationController // mine in nav_VC
for vc in nav.childViewControllers {
if vc is YUOR_DESIRED_VIEW_CONTROLLER {
nav.popToViewController(vc, animated: true)
return false// IT WONT LET YOU GO TO delegate METHOD
}
}
}
return true
}
tabBarController.selectedIndex даст вам выбранную вкладку
В методе tabBarController_shouldSelect_viewController вы можете установить желаемый контроллер представления с помощью простых вычислений.
если вы не получаете приведенный выше код, поиграйтесь с обоими вышеуказанными методами и узнаете, как оба работают вместе