Создайте подкласс UITabBarController
и используйте этот класс для контроллера панели вкладок. Подтвердите UITabBarControllerDelegate
в контроллере панели вкладок и верните false в методе tabBarController shouldSelect
, если вы не хотите переходить к контроллеру представления. Здесь вы можете показать всплывающее окно.
class TabbarController: UITabBarController, UITabBarControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
delegate = self
}
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
if let navigationController = viewController as? UINavigationController,
navigationController.viewControllers.contains(where: { $0 is MoreViewController }) {
//show pop up view
return false
} else {
return true
}
}
}
Или вы можете добавить UITabBarControllerDelegate
в один из своих встроенных контроллеров представления, как это
class ViewController: UIViewController, UITabBarControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
self.tabBarController?.delegate = self
}
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
if let navigationController = viewController as? UINavigationController,
navigationController.viewControllers.contains(where: { $0 is MoreViewController }) {
//show pop up view
return false
} else {
return true
}
}
}