具有自定义操作的 TabBar 控制器
TabBar Controller with custom action
我是 swift 的新手。我在我的项目中实现标签栏控制器并面临一些设计困难。我的目标是当用户单击一个选项卡栏项目时,它不应该导航到另一个视图控制器。它应该停留在当前视图中并向当前视图添加一个弹出视图 controller.I 已尝试但总是导航到下一个视图控制器。
创建一个 UITabBarController
subclass 并将该 class 用于您的标签栏控制器。当您不想导航到视图控制器时,在选项卡栏控制器中确认 UITabBarControllerDelegate
并在 tabBarController shouldSelect
方法中确认 return 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: { [=10=] 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: { [=11=] is MoreViewController }) {
//show pop up view
return false
} else {
return true
}
}
}
我是 swift 的新手。我在我的项目中实现标签栏控制器并面临一些设计困难。我的目标是当用户单击一个选项卡栏项目时,它不应该导航到另一个视图控制器。它应该停留在当前视图中并向当前视图添加一个弹出视图 controller.I 已尝试但总是导航到下一个视图控制器。
创建一个 UITabBarController
subclass 并将该 class 用于您的标签栏控制器。当您不想导航到视图控制器时,在选项卡栏控制器中确认 UITabBarControllerDelegate
并在 tabBarController shouldSelect
方法中确认 return 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: { [=10=] 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: { [=11=] is MoreViewController }) {
//show pop up view
return false
} else {
return true
}
}
}