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

自定义TabView点击TabBarItem视图不切换问题排查

问题原因及解决方案

问题出在**TabView的selection绑定类型与视图tag的类型不匹配**:

  • 你的selectedItem是TabItemOption枚举类型,但给每个视图设置的tag是枚举的rawValue(比如字符串/整型等其他类型)。
  • 虽然selectedItem的值会随点击变化,但TabView无法将枚举值和rawValue类型的tag匹配,因此不会切换视图。

修复代码

把每个视图的tag从枚举的rawValue改为枚举case本身即可:

struct ContentView: View {
    @State private var selectedItem: TabItemOption = .market
     
    var body: some View {
        ZStack {
                VStack {
                    TabView(selection: $selectedItem){
                        MarketView().tag(TabItemOption.market) // 移除.rawValue
                        
                        InterestView().tag(TabItemOption.interest) // 移除.rawValue
                        
                        WalletView().tag(TabItemOption.wallet) // 移除.rawValue
                        
                    }.toolbar(.hidden, for: .tabBar)
                }
                VStack {
                    Spacer()
                    TabBar(tappedItem: $selectedItem)
                }
        }
    }
}

这样selection的类型(TabItemOption)和tag的类型完全一致,TabView就能根据selectedItem的变化正确切换对应的视图了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 22:35:14