自定义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
相关产品推荐
相关产品推荐

