SwiftUI中TabView程序化切换失效问题求助
问题分析与解决
你的TabView程序化切换失效的核心原因是:TabView的selection绑定需要对应子视图的tag值才能正确识别切换目标,当前代码里没有给两个Tab子视图设置tag,导致点击按钮修改selTab后,TabView找不到对应的目标视图,只会出现闪烁但不切换的现象。
修正后的代码
struct MyTabView: View { @State private var selTab = 1 var body: some View { TabView(selection: $selTab) { Button("Goto Tab 2") { selTab = 2 } .tabItem { Label("Tab1", systemImage: "list.dash") } .tag(1) // 添加对应tag Text("Tab 2") .tabItem { Label("Tab2", systemImage: "list.dash") } .tag(2) // 添加对应tag } } } struct ContentView: View { var body: some View { MyTabView() } }
关键说明
- 给TabView中的每个子视图添加
.tag()修饰符,tag的值要和selTab的初始值、切换时设置的值完全匹配 TabView(selection:)的工作逻辑是:当绑定的状态值发生变化时,自动切换到带有对应tag的子视图
内容的提问来源于stack exchange,提问作者Andrew Voelkel
相关产品推荐
相关产品推荐

