xcode - icon - uitabbarcontroller programmatically swift
Cambie la barra de pestañas programáticamente en Swift (4)
Tengo una aplicación de barra de pestañas y tengo un botón en mi primera vista que quiero cuando presiono cambiar a mi segunda pestaña programáticamente en la barra de pestañas.
No puedo entender cómo obtener el índice, etc. para cambiarlo. He intentado cosas como esta.
tababarController.selectedIndex = 1
Sin éxito
Agregar al código de Anthony:
func switchToDataTab(){
NSTimer.scheduledTimerWithTimeInterval(0.2, target: self, selector: #selector(switchToDataTabCont), userInfo: nil,repeats: false)
}
func switchToDataTabCont(){
tabBarController!.selectedIndex = 0
}
Donde la clase de selector ha sido cambiada a
#selector(switchToDataTabCont)
Eso es bastante simple. TabBarController se declara como un tipo opcional
var tabBarController: UITabBarController? { get }
El ancestro más cercano en la jerarquía del controlador de vista que es un controlador de barra de pestañas. Si el controlador de vista o uno de sus antecesores es hijo de un controlador de barra de pestañas, esta propiedad contiene el controlador de barra de pestañas propietario. Esta propiedad es nula si el controlador de vista no está incrustado dentro de un controlador de barra de pestañas.
Entonces solo necesitas agregar "?" al final:
@IBAction func goToSecond(sender: AnyObject) {
tabBarController?.selectedIndex = 1
}
La solución proporcionada por Leo Dabus (ver arriba) funciona bien para mí. Sin embargo, algunos controles tienen estados incorrectos. No se puede arreglar eso, pero esta pequeña solución te hará bien a todos:
func switchToDataTab(){
NSTimer.scheduledTimerWithTimeInterval(0.2,
target: self,
selector: "switchToDataTabCont",
userInfo: nil,
repeats: false)
}
func switchToDataTabCont(){
tabBarController!.selectedIndex = 0
}
Actualización de la respuesta de Anthony para Swift3
func switchToDataTab() {
Timer.scheduledTimer(timeInterval: 0.2, target: self, selector: #selector(switchToDataTabCont), userInfo: nil, repeats: false)
}
func switchToDataTabCont(){
tabBarController!.selectedIndex = 0
}