我想要呼叫childFunction()演示ChildView按下按钮在父图。
import SwiftUI
struct ChildView: View {
func childFunction() {
print("I am the child")
}
var body: some View {
Text("I am the child")
}
}
struct ContentView: View {
var function: (() -> Void)?
var body: some View {
ChildView()
Button(action: {
self.function!()
}, label: {
Text("Button")
})
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
更新: 谢谢@RajaKishan,它的工作原理,但我需要这工作还递归
import SwiftUI
struct ContentView: View {
@State var text: String = "Parent"
var isNavigationViewAvailable = true
func function() {
print("This view is \(text)")
}
var body: some View {
VStack {
if isNavigationViewAvailable {
Button(action: {
function()
}, label: {
Text("Button")
})
}
if isNavigationViewAvailable {
NavigationView {
List {
NavigationLink("Child1") {
ContentView(text: "Child1", isNavigationViewAvailable: false)
}
NavigationLink("Child2") {
ContentView(text: "Child2", isNavigationViewAvailable: false)
}
NavigationLink("Child3") {
ContentView(text: "Child3", isNavigationViewAvailable: false)
}
}
}
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
也许是不是最好看的例子,但问题是,如何力的按钮运行的功能的儿童之后的用户访问过的相应的孩子。
在开始的时候户按下按钮,它印刷品"这种观点是父"。 之后用户候级1按下按钮应该打印的"这一看级1"为等。 因此,功能,按钮运行应该被引用最后一个孩子。
更新: 在结束我写了 这个 的解决方案。
更新: 我接收到的反馈意见,要求我作出澄清。 没有问题。 我希望它将帮助人:)
澄清: 我没有将整个码,只有用一个简单的例子。 但我需要这在我的执行情况的一棵树的-像这样产生的菜单:当中的每个项目的菜单有或不具有其儿童。 按父母的对象用户进入的儿童的对象。 在这里我需要的是能够回来的儿童的对象父母,但称这一解雇职能从父母的对象。 为此,我使用了下列代码并提到这一功能为每个家长的对象:
@Environment(\.presentationMode) var presentationMode
presentationMode.wrappedValue.dismiss()