这是我好几年来第一次尝试 Swift 开发,Swiftui 的出现让语言发生了一些变化。我一直在关注一些不同的教程,但我觉得我可能搞混了一些做事的方法。
我正在尝试初始化FamilyActivityPicker
并响应onChange
事件。按照一个教程,我绑定到的数据FamilyActivityPicker
来自我视图中用作状态的模型。但是,onChange
选择器的事件永远不会触发(我有一个print
永远不会触发的语句)。如果我在模型中向添加一些代码didSet
,这确实会触发(虽然似乎触发了 6 次)。有人能看出我在这里做错了什么吗?我不确定这是否归因于我对 swiftui 的理解以及一切如何结合在一起
struct ContentView: View {
@StateObject var model = FamilyControlModel.shared
@State var isPresented = false
var body: some View {
Button("Open picker") {
Task {
try await model.authorize()
isPresented = true
}
}
.familyActivityPicker(
isPresented: $isPresented,
selection: $model.selection
).onChange(of: model.selection) {
print("on change")
let data = try? encoder.encode(model.selection)
let strData = data!.base64EncodedString()
print(strData)
}
.padding()
}
}
Class FamilyControlModel {
static let shared = FamilyControlModel()
var selection = FamilyActivitySelection()
}