swiftui-如何从弹出模式视图中引用父视图? (附加代码)

时间:2020-03-29 09:51:22

标签: swiftui

有了SwiftUI,还有什么比下面的方法更简单的方法来从模型视图中引用父视图中的函数/逻辑?

在下面,我必须在模式视图中创建一个参考函数变量,然后手动将其传递给它。想知道是否还有另一种方法可以减少代码行?能够仅从模型视图引用调用视图?

背景-研究某些逻辑可能存储在父级中或集中到另一个文件中的方案。也许与在Core Data数据库上进行创建/更新/删除操作相关的逻辑,然后在模式视图中说要添加另一项时,则需要回调到集中的“创建项”代码。

import SwiftUI
import PlaygroundSupport

struct GCParentView: View {
    @State private var showModal : Bool = false

    func addItemLogic() {
        print("addItemLogic")   // ** CONSOLIDATED LOGIC
    }

    var body: some View {
        VStack {
            Text("parent")
            Button(action: {
                self.showModal=true
            }) {
                Text("Show Modal")
            }.sheet(isPresented: self.$showModal) {
                GCModalView(
                    addItemFunction: self.addItemLogic  // ** HAVE TO MANUALLY PASS REF?
                )
            }
        }
    }
}

struct GCModalView: View {
    @Environment(\.presentationMode) var presentationMode
    var addItemFunction : () -> ()  // ** NEED TO HAVE VARIABLE TO ASSIGN TO?
    var body: some View {
        VStack {
            Text("modal")
            Button(action: {
                self.addItemFunction()
                self.presentationMode.wrappedValue.dismiss()
            }) {
                Text("Add Item & Exit")
            }
        }
    }
}

let gcParentView = GCParentView()
PlaygroundPage.current.liveView = UIHostingController(rootView: gcParentView)

0 个答案:

没有答案