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()
}
}
Über den Autor