swift - 具有自定义操作的 TabBar Controller

标签 swift uitabbarcontroller

我是 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/

相关文章:

ios - UIToolbarButton 转至 UITabBarController 中的特定 View

swift - 无法更改 tabBar 内的选项卡(tabBar : didSelectItem item:)

swift - 核心蓝牙用数据创建CBUUID

swift - 如何将 SceneKit 节点更新为 'automatically' 以反射(reflect)底层模型?

ios - 隐藏导航栏和标签栏后 UICollectionView 框架发生变化

ios - 如何通过 UITabBarController 将 indexPathForSelectedRow 传递到 UITabView?

xamarin.ios - 以编程方式更改 Monotouch 应用程序中的选项卡

swift - 为什么 .pch 文件在 swift 中不可用?

ios - 我如何引用以编程方式添加文本字段以从 Swift 内部获取数据?

arrays - 不同类型的 RxSwift 变量数组