Swiftui tabbar selecteditem

VonTobias Stephan

Swiftui tabbar selecteditem

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

Tobias Stephan administrator

Schreibe eine Antwort