具有自定义操作的TabBar控制器

时间:2019-06-06 10:26:34

标签: swift uitabbarcontroller

我是新手。我在我的项目中实现了标签栏控制器,并面临一些设计困难。我的目标是当用户单击一个选项卡项时,它不应导航到另一个视图控制器。它应该停留在当前视图中,并向当前视图控制器添加一个弹出视图。我尝试过,但始终会导航到下一个视图控制器。

1 个答案:

答案 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
        }
    }
}
相关问题