내가 원하는 전화를 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()
}
}
아마 최고의 보고를 들어,하지만 질문가,방법을 강제로 실행 버튼을 기능의 그 후 아이 방문한 사용자가 해당 아이입니다.
음에 시작할 때 사용자가 버튼을 누르면 그것을 인쇄"이 보기에는 부모". 후자 child1 버튼을 눌러 인쇄해야 합니다"이 보는 Child1 으로"그렇다. 그래서,함수는 버튼을 실행해야에서 참조하는 마지막 아이입니다.
업데이트: 끝에서 썼는데 이 솔루션입니다.
업데이트: 을 받았 의견을 묻고 나를 대체할 수 없습니다. 아무 문제 없습니다. 나가겠습니다.누군가 있습니다.:)
설명: 지 않았다 묶 코드를 사용한 간단한 예제입니다. 그러나 나는 데 필요한이 나의 구현 트리 생성되는 메뉴가:면 각 항목에서 메뉴가 있거나 없는 그 아이들입니다. 에 누르면 부모 개체가 사용자 제공으로 자식 개체. 그리고 여기에 내가 필요할 수 있에서 돌아온 자식 개체 부모이지만,이를 해제 기능에서 부모 개체입니다. 이를 위해 내가 사용하는 다음 코드를 참조하여 이 기능을 각 부모 개체:
@Environment(\.presentationMode) var presentationMode
presentationMode.wrappedValue.dismiss()