当选项卡点击两次时禁用自动弹出到根视图控制器

lau*_*ing 1 tabbar ios swift

目前,我使用视图控制器来推送另一个视图控制器,但我不允许用户返回到上一个视图控制器。我已经隐藏了栏后退按钮,但在 swift 4 中,当标签栏点击两次时,用户能够自动转到导航栏中的 rootviewcontroller。关于 swift 4.2 有什么建议可以解决这个问题吗?

And*_*tta 5

您可以子类化UITabBarController,使选项卡栏控制器成为它自己的委托并实现以下委托函数:

class TabBarController: UITabBarController, UITabBarControllerDelegate {

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        delegate = self
    }

    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
        delegate = self
    }

    func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
        return viewController != selectedViewController
    }

}
Run Code Online (Sandbox Code Playgroud)

这样用户只能选择尚未选择的选项卡栏项目。