Swiftui tabbar selecteditem

PorTobias Stephan

Swiftui tabbar selecteditem

Durante mis primeros intentos con Swift UI, intenté desesperadamente averiguar cómo seleccionar la pestaña activa de forma programada. El truco está en la encuadernación.

@State public var selection = 0

Con un clic en el botón de selección le dice al valor uno. Como la selección está directamente vinculada a la barra de pestañas, el elemento de pestaña activo cambia según se desee.

Button("Go",action: {self.selection = 1})

La vinculación es la señal de acceso que se puede pasar para permitir el acceso directo de lectura y escritura al valor sin conceder la posesión (en el sentido de conservar un tipo de referencia) o la copia (para un tipo de valor).

Cuando el usuario selecciona una pestaña en la vista de pestañas, cambia el valor unilateralmente a través de la vinculación y asigna el correspondiente .tag(…) a la variableTab seleccionada. Esto funciona de la misma manera para @Estado y Objeto Observable.

El programador también puede asignar un valor a esta variable Tab seleccionada en cualquier momento, y el TabView cambia inmediatamente la pestaña visualizada.
Esta es la clave para la navegación programada en SwiftUI.

Aquí hay un ejemplo que puedes copiar/pegar directamente para jugar con él.

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

Sobre el autor

Tobias Stephan administrator

Deja un comentario