观察绑定或状态变量

Observing Binding or State variables

我正在寻找一种观察 @State@Binding 值在 onReceive 中变化的方法。我无法让它工作,我怀疑这是不可能的,但也许有一种方法可以将它们转换为 Publisher 或其他东西,同时保持源更新值像现在一样?

您可以在下面找到我需要这个的一些背景信息:

我有一个 parent 视图,它应该基于这个库显示半模态:https://github.com/AndreaMiotto/PartialSheet

为此,我创建了一个 @State private var modalPresented: Bool = false 并使用它来显示和隐藏此模态视图。这工作正常,但我的 parent 在初始化 self 后立即初始化此模态,所以我完全松开 onAppearonDisappear 修饰符。问题是我需要 onAppear 每次呈现此模态时执行一些数据获取(理想情况下,当模态被关闭时我也会取消网络任务)。

改用 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)
    }
}