3

我的视图中有一个列表,一旦列表参数发生变化,它的元素就会被更新。这是我的观点:

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

}

视图中的用户列表

变量 users 是一个@ObservedObject,因此列表内容会在模型中发生更改时自动更新。

我的问题是:如何捕获有关users变量的“更新”事件?捕获后如何触发动作(例如调用函数)?

4

2 回答 2

4

假设这listaUtenti@Published财产,您可以按如下方式抓住其发布者

List(self.users.listaUtenti, id: \.self) { user in
    Text(user)
}
.onReceive(self.users.$listaUtenti) { newValue in
     // do this what's needed
}
于 2020-02-02T14:03:53.143 回答
0
class Utenti : ObservableObject {

    @Published var listaUtenti = ["anna", "smith", "david"]  {
       didSet {

                // your func here

         }
}

}

上面的代码,只要 listaUtenti 元素发生变化,你的 func 就会执行。

于 2020-02-02T12:52:45.813 回答