【发布时间】:2023-01-28 03:23:09
【问题描述】:
我已经将一个常量值传递给 Toggle,因为我想对 toggle 的值更改执行某些操作,并且需要在 Tap Gesture 上完成,因为在内部我可能也需要更改 toggle 的值。但是 hus 代码不起作用
@State private var toggle = false
var body: some View {
VStack {
Toggle(isOn: .constant(toggle)) {
Text("Hello World")
}
.padding()
.onTapGesture {
print("Tapped")
self.toggle.toggle()
}
}
}
}
【问题讨论】:
-
尝试
onChange或toggle。 UI 部分将无关紧要,因为它会在变量更改时触发。 -
我不能使用
onChange方法,因为只要切换值发生变化,它就会被触发。在我的实际代码中,我需要在切换值更改时调用 api,而且在一种情况下,我需要从应用程序更改切换值。如果我使用onChange方法,每次值从应用程序或 UI 更改时,都会触发此方法并且它将进入无限循环,因此为了避免这种情况,我想使用 Tap Gesture。 -
@Asperi,在这种情况下也不会触发
onTapGesture -
然后你只需要代理绑定(如stackoverflow.com/a/59341588/12299030)来拦截
set中的变化,并将其转移到状态或跳过,并且没有额外的点击手势。
标签: ios swift swiftui swiftui-navigationview