我是 swift 的新手。我在我的项目中实现标签栏 Controller 并面临一些设计困难。我的目标是当用户单击一个选项卡栏项目时,它不应该导航到另一个 View Controller 。它应该停留在当前 View 中,并向当前 View Controller 添加一个弹出 View 。我已经尝试过,但它总是导航到下一个 View Controller 。
最佳答案
创建一个 UITabBarController
子类并将该类用于您的选项卡栏 Controller 。当您不想导航到 View Controller 时,确认标签栏 Controller 中的 UITabBarControllerDelegate
并在 tabBarController shouldSelect
方法中返回 false。您可以在此处显示弹出 View 。
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
}
}
}
或者您可以像这样在其中一个嵌入式 View Controller 中添加 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
}
}
}
关于swift - 具有自定义操作的 TabBar Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56475669/