【问题标题】:SwiftUI return value from modal view模态视图中的 SwiftUI 返回值
【发布时间】:2020-08-20 03:45:28
【问题描述】:

我目前有一个位于模态 (.sheet) 视图内的 List,我正在尝试将点击的值从中检索回上一个视图。我怎样才能做到这一点?

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"

【问题讨论】:

    标签: ios swift swiftui modal-view


    【解决方案1】:

    你不应该!您的 .sheet 视图应该更新您的模型,然后如果需要,这些更改会反映在您之前的视图中。

    这里有一个很好的资源来解释这种交流: https://youtu.be/4GjXq2Sr55Q

    【讨论】:

    • 谢谢艾伦,在看到视频更新之前,我能够自己实现这一点。
    猜你喜欢
    • 2020-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多