SwiftUI如何使用“委托事件处理程序EventArgs”方式在C中将数据从子级传递到父级

SwiftUI如何使用“委托事件处理程序EventArgs”方式在C中将数据从子级传递到父级,swift,swiftui,Swift,Swiftui,我已经读过这篇文章了 然而,在最初的海报编辑了他自己的答案后,他提出了一种与他自己的问题不匹配的方法。 不幸的是,我还没有达到在这个帖子上发表评论的程度 这是上面文章中重复的代码示例,用于解释问题: struct ChildView: View { var function: () -> Void var body: some View { Button(action: { self.function() }, la

我已经读过这篇文章了 然而,在最初的海报编辑了他自己的答案后,他提出了一种与他自己的问题不匹配的方法。 不幸的是,我还没有达到在这个帖子上发表评论的程度

这是上面文章中重复的代码示例,用于解释问题:

struct ChildView: View {
    var function: () -> Void

    var body: some View {
        Button(action: {
            self.function()
        }, label: {
            Text("Button")
        })
    }
}

struct ContentView: View {
    var body: some View {
        ChildView(function: { self.setViewBackToNil() })
    }

    func setViewBackToNil() {
        print("I am the parent")
    }
}

现在我想向setViewBackToNilmyStringParameter添加一个字符串参数:String

这里是可能的解决方案。使用Xcode 11.4/iOS 13.4进行测试

struct ChildView: View {
    var function: (String) -> Void

    @State private var value = "Child Value"
    var body: some View {
        Button(action: {
            self.function(self.value)
        }, label: {
            Text("Button")
        })
    }
}

struct ContentView: View {
    var body: some View {
        ChildView { self.setViewBackToNil(myStringParameter: $0) }
    }

    func setViewBackToNil(myStringParameter: String) {
        print("I am the parent: \(myStringParameter)")
    }
}