Voglio chiamare childFunction() demo ChildView premendo il pulsante di visualizzazione principale.
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()
}
}
Aggiornamento: Grazie @RajaKishan, funziona, ma ho bisogno di lavorare anche in modo ricorsivo
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()
}
}
Forse non è il miglior esempio, ma la domanda è, come forzare il pulsante per eseguire la funzione di bambino dopo che l'utente ha visitato corrispondente bambino.
Come, inizia quando l'utente preme il pulsante di stampa ("Questo punto di vista è Padre". Dopo che l'utente viene a child1 la pressione del pulsante di stampa "Questo punto di vista è Child1" come così via. Quindi, la funzione del pulsante viene eseguita deve essere indicato da ultimo figlio.
Aggiornamento: Alla fine ho scritto questa soluzione.
Aggiornamento: Ho ricevuto feedback, mi chiede un chiarimento. Nessun problema. Spero che sarà di aiuto a qualcuno.:)
Chiarimento: Io non racchiudere il codice, basta usare un semplice esempio. Ma avevo bisogno di questo nella mia implementazione di un albero-come menu generato: quando ogni voce del menu è o non avere figli. Premendo sull'oggetto principale utente entra in oggetti figlio. E qui ho bisogno di essere in grado di tornare da un oggetto figlio per un genitore, ma la chiamata a questa funzione elimina dall'oggetto padre. Per questo ho utilizzato il seguente codice e di cui all'questa funzione per ciascun genitore oggetto:
@Environment(\.presentationMode) var presentationMode
presentationMode.wrappedValue.dismiss()