观察绑定或状态变量
Posted
技术标签:
【中文标题】观察绑定或状态变量【英文标题】:Observing Binding or State variables 【发布时间】:2020-03-17 12:51:37 【问题描述】:我正在寻找一种方法来观察@State
或@Binding
在onReceive
中的值变化。我无法让它工作,我怀疑这是不可能的,但也许有一种方法可以将它们转换为 Publisher
或其他东西,同时保持源更新值就像现在一样?
您可以在下面找到我需要这个的一些上下文:
我有一个父视图,它应该基于这个库显示半模态:https://github.com/AndreaMiotto/PartialSheet
为此,我创建了一个@State private var modalPresented: Bool = false
,并使用它来显示和隐藏这个模态视图。这很好用,但是我的父母在初始化 self 后立即初始化了这个模式,所以我完全失去了 onAppear
和 onDisappear
修饰符。问题是我需要onAppear
在每次呈现此模式时执行一些数据获取(理想情况下,当模式被解除时我也会取消网络任务)。
【问题讨论】:
改用 Observed / Observable。 【参考方案1】:改用 ObservableObject / ObservedObject。
一个例子
import SwiftUI
class Model: ObservableObject
@Published var txt = ""
@Published var editing = false
struct ContentView: View
@ObservedObject var model = Model()
var body: some View
TextField("Email", text: self.$model.txt, onEditingChanged: edit in
self.model.editing = edit
).onReceive(model.$txt) (output) in
print("txt:", output)
.onReceive(model.$editing) (output) in
print("editing:", output)
.padding().border(Color.red)
【讨论】:
以上是关于观察绑定或状态变量的主要内容,如果未能解决你的问题,请参考以下文章