ฉันอยากจะโทรหา 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 มันได้ผลแต่ฉันต้องการให้มันทำงานยัง recursively
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"อย่างที่แล้ว ดังนั้น,ฟังก์ชันที่ปุ่มวิ่งจะถูกอ้างอิงจากสุดท้ายเด็กน้อย
ปรับปรุง: ในที่สุดฉันเขียน นี้ คิดอะไรบางอย่างออก
ปรับปรุง: ฉันได้รับการแจ้งเตือนการเริ่มทำงานถามฉันเพื่อช่วยทำให้ชัดเจน. ไม่มีปัญหา ฉันหวังว่ามันจะช่วยใครบางคน:)
ช่วยทำให้ชัดเจน: ฉันไม่ได้ enclose ตลอดรหัสมันเคยง่ายๆตัวอย่าง แต่ฉันต้องการสิ่งนี้ในของฉัน implementation ของต้นไม้-เหมือนที่ถูกสร้างเมนู:เมื่อแต่ละรายการในเมนูมีหรือไม่มีมันเด็กแล้ว ต่อพ่อค้าของผู้ใช้มากไปเด็กวัตถุ. และตอนนี้ฉันต้องการที่จะสามารถกลับมาจากเด็กวัตถุยุดแม่ไว้ตั้งแต่ที่เส้นแบ่งเขตเมืองแต่เรียกมันไม่สนใจฟังก์ชันจากพ่อแม่เดาใจ เรื่องนี้ฉันเคยงทำตามรหัสและให้ใครๆเรียกฟังก์ชันนี้เพื่อกันและพ่อแม่วัตถุ:
@Environment(\.presentationMode) var presentationMode
presentationMode.wrappedValue.dismiss()