观察绑定或状态变量

时间:2020-03-17 12:51:37

标签: ios swift swiftui combine

我正在寻找一种观察@State@BindingonReceive值变化的方法。我无法使其工作,并且我怀疑这是不可能的,但是也许有一种方法可以将它们转换为Publisher或其他方式,同时保持源代码更新的价值?

在下面您可以找到一些背景,为什么我需要这样做:

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

为此,我创建了一个@State private var modalPresented: Bool = false,并使用它来显示和隐藏此模式视图。这很好用,但是我的父母在初始化self之后立即初始化了该模式,因此我完全松开了onAppearonDisappear修饰符。问题在于,每次显示此模态时,我都需要onAppear来执行一些数据提取(理想情况下,在取消模态时,我也将取消网络任务)。

1 个答案:

答案 0 :(得分: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)
    }
}
相关问题