当我按下已选择的 Tab 键时防止屏幕更改

Prevent screen change when I press tab which is already selected

提问人:Louiza A 提问时间:6/8/2023 更新时间:6/8/2023 访问量:34

问:

我有一个带有 4 个选项卡的 CustomTabBarController。当我在第三个选项卡中时,假设我有一个名为 A 的屏幕,并且我有一个按钮,可以将我带到第二个名为 B 的屏幕。因此,当我在屏幕 B 上并按下第 3 个选项卡时,我想留在屏幕 B 上。当前的应用行为是,当我在屏幕 B 上并按下第 3 个选项卡时,应用将导航到屏幕 A。

你知道如何解决这个问题吗?

swift uitabbarcontroller uitabbaritem

评论

0赞 HangarRash 6/8/2023
发布相关代码(以文本形式)。您描述的不是选项卡栏控制器的标准功能。
1赞 Louiza A 6/9/2023
@HangarRash clawesome 的答案是正确的

答:

1赞 clawesome 6/8/2023 #1

在子类中继承协议,在将控制器的委托设置为 .然后,如果电流等于传入的视图控制器,则重写返回的方法。CustomTabBarControllerUITabBarControllerDelegateviewDidLoad()selffunc tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> BoolfalseselectedViewController

class CustomTabBarController: UITabBarController, UITabBarControllerDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        self.delegate = self
    }
    
    func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
        if selectedViewController == viewController {
            return false
        }
        return true
    }
    
}