SwiftUI TabView切换标签时触发函数,onChange报错如何解决?
错误原因
你给onChange(of:)传入的$currentTab是Binding<Int>类型,onChange要求监听的参数必须遵守Equatable协议,你实际需要监听的是currentTab的存储值,而非它的绑定包装对象,所以才会触发类型不匹配的报错。
修正方案
把onChange参数里的$符号删除即可,修正后的代码如下:
.onChange(of: currentTab, perform: { newValue in print(newValue) })
完整使用示例(配合TabView)
struct TabDemoView: View { @State var currentTab = 0 var body: some View { // TabView的selection参数需要绑定,所以这里保留$ TabView(selection: $currentTab) { Text("首页") .tabItem { Label("首页", systemImage: "house") } .tag(0) Text("我的") .tabItem { Label("我的", systemImage: "person") } .tag(1) } // onChange监听值本身,不需要$ .onChange(of: currentTab) { newValue in print("切换到标签\(newValue)") // 这里写你需要触发的业务逻辑 } } }
内容的提问来源于stack exchange,提问作者HAHALOSAH
相关产品推荐
相关产品推荐

