【发布时间】:2020-12-29 23:58:44
【问题描述】:
我正在使用 SwiftUI,并且想在切换状态更改时做一些事情,但我找不到解决方案。
当切换状态发生变化时,我如何调用函数或执行任何操作?
@State var condition = false
Toggle(isOn: $condition) {
Text("Toggle text here")
}
【问题讨论】:
-
通常您不会需要因为事件而调用函数。将您的视图视为状态的函数。当
condition更改时,body将被重新评估并反映该值。您可以通过在您的Text视图中包含(可打印形式的)condition轻松观察到这一点... -
@Alladinian 如果您想通过翻转开关触发一些额外的逻辑,但不改变视图层次结构中的任何内容,该怎么办?开关不仅可以控制其他视图的外观,还可以控制。表示我们可能想要保存然后在应用的其他部分读取的一些用户偏好。
-
@raven_raven 我的第一个想法是,它可能是
ObservableObject的@Published属性,而不是@State。然后,您可以使用任何Combine运算符来做任何您想做的事情,作为对值变化的反应。