Durante i miei primi tentativi con Swift UI, ho cercato disperatamente di capire come selezionare la scheda attiva in modo programmatico. Il trucco sta nella rilegatura.
@State public var selection = 0
Con un clic sul tasto di selezione del tasto viene visualizzato il valore uno. Poiché la selezione è collegata direttamente alla barra delle schede, la voce attiva della scheda cambia a piacere.
Button("Go",action: {self.selection = 1})
Il binding è il token di accesso che si può passare per consentire l’accesso diretto in lettura e scrittura al valore senza concedere il possesso (nel senso di mantenere un tipo di riferimento) o la copia (per un tipo di valore).
Quando l’utente seleziona un tab nella vista tab, cambia il valore unilateralmente tramite binding e assegna il corrispondente .tag(…) alla variabile selectedTab. Questo funziona allo stesso modo per @State e ObservableObject.
Il programmatore può anche assegnare un valore a questa variabile selezionataTab in qualsiasi momento – e la TabView cambia immediatamente la scheda visualizzata.
Questa è la chiave per la navigazione programmatica in SwiftUI.
Ecco un esempio che si può copiare / incollare direttamente per giocare con esso.
import SwiftUI
struct ContentView: View {
@State public var selection = 0
let defaults = UserDefaults.standard
var body: some View {
TabView(selection: $selection){
VStack {
Text("First View")
Button("Go",action: {self.selection = 1})
}
.font(.title)
.tabItem {
VStack {
Image("first")
Text("First")
}
}
.tag(0)
Text("Second View")
.font(.title)
.tabItem {
VStack {
HStack{
Image("second")
Text("Second")
}
}
}
.tag(1)
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
Über den Autor