Допустим, у вас есть UINavigationController внутри каждой вкладки UITabBarController , и defaultViewController (1) является rootViewController вашей первой вкладки, внутри которого есть кнопка для перехода к ViewController (2) .
Для этого прежде всего давайте создадим общее решение. Создайте UIApplication Расширение, как это,
extension UIApplication {
class func topViewController(controller: UIViewController? = UIApplication.shared.keyWindow?.rootViewController) -> UIViewController? {
if let navigationController = controller as? UINavigationController {
return topViewController(controller: navigationController.visibleViewController)
}
return controller
}
}
Реализация UITabBarControllerDelegate в AppDelegate и выполнение приведенного ниже кода,
func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
if tabBarController.selectedIndex == 0 {
UIApplication.topViewController()?.navigationController?.popToRootViewController(animated: false)
}
}
В приведенном выше коде я взял tabBarController.selectedIndex в 0, вы можете сделать его различным в зависимости от ваших требований.
Дайте мне знать, если возникнут какие-либо вопросы.