模态视图中的 SwiftUI return 值
SwiftUI return value from modal view
我目前有一个 List
位于模态 (.sheet
) 视图中,我正在尝试从中检索点击的值返回到前一个视图。我怎样才能做到这一点?
import SwiftUI
struct ContentView: View {
@State var showingModal: Bool = false
var body: some View {
VStack {
Button(action: {
self.showingModal.toggle()
}) {
Text("Tap me!")
}.sheet(isPresented: $showingModal, onDismiss: {
print("Dismissed")
}) {
ModalView(isShowing: self.$showingModal)
}
Text("Selected Item: ")
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
import SwiftUI
struct ModalView: View {
@State private var names = ["Foo", "Bar"]
@Binding var isShowing: Bool
var body: some View {
List(names, id: \.self) { name in
HStack {
Text("\(name)")
Spacer()
}
.contentShape(Rectangle())
.onTapGesture {
print(name)
self.isShowing = false
}
}
}
}
struct ModalView_Previews: PreviewProvider {
@State static var value = true
static var previews: some View {
ModalView(isShowing: self.$value)
}
}
在此示例中,我想将 Text
上的文本设置为 "Selected item"
。
你不应该!您的 .sheet 视图应该更新您的模型,然后如果需要,此更改会反映在您之前的视图中。
这里有一个很好的资源来解释这种交流:
https://youtu.be/4GjXq2Sr55Q
我目前有一个 List
位于模态 (.sheet
) 视图中,我正在尝试从中检索点击的值返回到前一个视图。我怎样才能做到这一点?
import SwiftUI
struct ContentView: View {
@State var showingModal: Bool = false
var body: some View {
VStack {
Button(action: {
self.showingModal.toggle()
}) {
Text("Tap me!")
}.sheet(isPresented: $showingModal, onDismiss: {
print("Dismissed")
}) {
ModalView(isShowing: self.$showingModal)
}
Text("Selected Item: ")
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
import SwiftUI
struct ModalView: View {
@State private var names = ["Foo", "Bar"]
@Binding var isShowing: Bool
var body: some View {
List(names, id: \.self) { name in
HStack {
Text("\(name)")
Spacer()
}
.contentShape(Rectangle())
.onTapGesture {
print(name)
self.isShowing = false
}
}
}
}
struct ModalView_Previews: PreviewProvider {
@State static var value = true
static var previews: some View {
ModalView(isShowing: self.$value)
}
}
在此示例中,我想将 Text
上的文本设置为 "Selected item"
。
你不应该!您的 .sheet 视图应该更新您的模型,然后如果需要,此更改会反映在您之前的视图中。
这里有一个很好的资源来解释这种交流: https://youtu.be/4GjXq2Sr55Q