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() } }