Jes*_*ssy 9 ios swift swiftui swiftui-form
我想将关闭时的数据传递presentViewController
到上一个屏幕。在这里,我想使用块将数据作为 UIKitApp 传递到上一个屏幕。但我不知道传递数据。options
我们必须传回哪些数据?
struct ContentView: View {
@State var showModel = false
var body: some View {
VStack {
Button(action: {
showModel.toggle()
}, label: {
Text("Show filters")
}).sheet(isPresented: $showModel, content: {
FilterView()
})
}
}
}
struct FilterView: View {
@Environment(\.presentationMode) var presentationMode
var onDismiss: ((_ model: Filter) -> Void)?
var body: some View {
VStack {
Button(action: {
// Pass data from here to ContentView
let filter = Filter(fromDate: "10/07/2021", toDate: "12/07/2021")
onDismiss?(filter)
presentationMode.wrappedValue.dismiss()
}, label: {
Text("Applay Filters")
}).padding()
}.padding()
}
}
struct Filter {
var fromDate: String
var toDate: String
}
Run Code Online (Sandbox Code Playgroud)
Tae*_*Kim 15
您可以使用@Binding
它(或@StateObject
, @ObservedObject
,@Environmentobject
与@ObservableObject
使用 MVVM 设计模式)
下面的代码是使用@Binding的示例。
添加/编辑的行
Text("\(filter.fromDate) and \(filter.toDate)") // to see the changed values
@State var filter = Filter(fromDate: "", toDate: "") // in ContentView
@Binding var filter: Filter // in FilterView
FilterView(filter: $filter) // $ used for @Binding parameter
Run Code Online (Sandbox Code Playgroud)
完整代码
struct ContentView: View {
@State var showModel = false
@State var filter = Filter(fromDate: "", toDate: "")
var body: some View {
VStack {
Text("\(filter.fromDate) and \(filter.toDate)")
Button(action: {
showModel.toggle()
}, label: {
Text("Show filters")
}).sheet(isPresented: $showModel, content: {
FilterView(filter: $filter)
})
}
}
}
struct FilterView: View {
@Environment(\.presentationMode) var presentationMode
var onDismiss: ((_ model: Filter) -> Void)?
@Binding var filter: Filter
var body: some View {
VStack {
Button(action: {
// Pass data from here to ContentView
filter = Filter(fromDate: "10/07/2021", toDate: "12/07/2021")
onDismiss?(filter)
presentationMode.wrappedValue.dismiss()
}, label: {
Text("Applay Filters")
}).padding()
}.padding()
}
}
struct Filter {
var fromDate: String
var toDate: String
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5475 次 |
最近记录: |