我是新手。我在我的项目中实现了标签栏控制器,并面临一些设计困难。我的目标是当用户单击一个选项卡项时,它不应导航到另一个视图控制器。它应该停留在当前视图中,并向当前视图控制器添加一个弹出视图。我尝试过,但始终会导航到下一个视图控制器。
答案 0 :(得分:1)
创建一个UITabBarController
子类,并将该类用于标签栏控制器。当您不想导航到视图控制器时,请在标签栏控制器中确认为UITabBarControllerDelegate
,并在tabBarController shouldSelect
方法中返回false。在这里您可以显示弹出视图。
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
}
}
}