Vreau să sun childFunction() demo ChildView prin apăsarea butonului în vedere părinte.
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()
}
}
Update: Multumesc @RajaKishan, functioneaza, dar am nevoie de lucru, de asemenea, recursiv
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()
}
}
Poate că nu este cel mai bun în căutarea de exemplu, dar întrebarea este, cum de a forța butonul pentru a rula funcția de copil după ce utilizatorul a vizitat corespunzătoare a copilului.
Astfel, la pornire, atunci când utilizatorul apasă butonul tipărește "Acest punct de vedere este Mamă". După ce utilizatorul vine la copilului1 butonul de presa print "Acest punct de vedere este Copilului1", ca așa mai departe. Deci, funcția care butonul rulează ar trebui să fie de referință de la ultimul copil.
Update: În final, am scris această soluție.
Update: Am primit feedback-ul pentru a-mi cere clarificări. Nici o problema. Sper că va ajuta pe cineva.:)
Clarificare: Nu am anexeze întregul cod, folosit doar un simplu exemplu. Dar am nevoie de aceasta în punerea în aplicare a unui copac, cum ar fi generat meniu: atunci când fiecare element din meniu are sau nu are copii. Apăsați pe obiect părinte utilizatorul vine în obiectele copil. Și aici am nevoie pentru a fi capabil de a veni înapoi de la un copil la obiect părinte, dar suna acest respingerea funcție de obiectul parinte. Pentru aceasta am utilizat următorul cod și menționate la această funcție pentru fiecare părinte obiect:
@Environment(\.presentationMode) var presentationMode
presentationMode.wrappedValue.dismiss()