You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift点击已选中UITabBarItem时禁用pop到根控制器的动画效果

实现方案

核心思路是拦截点击已选中tab的系统默认行为,主动执行无动画的pop到根控制器操作,替换系统默认的带动画操作:

  1. 保留UITabBarController的代理设置,替换你之前用于完全禁止pop行为的代理方法代码为以下实现:
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
    // 判定当前点击的是否为已经选中的tab对应控制器
    guard viewController === tabBarController.selectedViewController else {
        // 非当前选中tab,走系统默认选中逻辑
        return true
    }
    // 取出当前tab对应的导航控制器,主动执行无动画pop到根
    if let navigationController = viewController as? UINavigationController {
        navigationController.popToRootViewController(animated: false)
    }
    // 阻止系统默认的带动画pop行为
    return false
}
注意事项
  • 如果你的tabItem对应的根控制器不是直接为UINavigationController(比如嵌套了其他自定义容器控制器),需要自行调整代码获取到对应层级的UINavigationController实例再执行pop操作
  • 该方案完全保留了pop到根控制器的业务逻辑,仅关闭了切换动画,不会影响其他tab的正常切换行为

内容的提问来源于stack exchange,提问作者user883884

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 18:15:03