我在View中有一个List,一旦list参数更改,它的元素将被更新。这是我的观点:
struct ContentView: View {
@ObservedObject var users = Utenti()
@State private var isSharePresented: Bool = false
var body: some View {
VStack(spacing: 20) {
HStack(alignment: .center) {
Spacer()
Text("Internal Testers")
.font(.title)
.foregroundColor(.primary)
Spacer()
Button(action: {
self.isSharePresented.toggle()
}) {
Image(systemName: "square.and.arrow.up").font(.title).padding(.trailing)
}.sheet(isPresented: self.$isSharePresented, onDismiss: {
print("Dismissed")
}, content: {
ActivityViewController(activityItems: self.users.listaUtenti)
})
}
List(self.users.listaUtenti, id: \.self) { user in
Text(user)
}
}
}
}
变量用户是@ObservedObject,因此列表内容在模型中更改后会自动更新。
我的问题是:如何捕获与 users 变量有关的'update'事件?捕获后如何触发动作(例如调用函数)?
答案 0 :(得分:3)
假设listaUtenti
是@Published
的属性,您可以按以下方式捕获其发布者
List(self.users.listaUtenti, id: \.self) { user in
Text(user)
}
.onReceive(self.users.$listaUtenti) { newValue in
// do this what's needed
}
答案 1 :(得分:0)
struct Utenti : ObsevableObject {
@published var listaUtenti = [“anna”, “smith”, “david”] {
didSet {
// your’s func here
}
}
}
在代码上方,只要listaUtenti元素发生更改,您的函子就会执行。