【问题标题】:Observing Binding or State variables观察绑定或状态变量
【发布时间】:2020-03-17 12:51:37
【问题描述】:

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

您可以在下面找到我需要这个的一些上下文:

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

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

【问题讨论】:

  • 改用 Observed / Observable。

标签: ios swift swiftui combine


【解决方案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)
    }
}

【讨论】:

    猜你喜欢
    • 2021-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    • 2018-01-20
    • 2020-05-24
    相关资源
    最近更新 更多