Como la solución de Stuart Clark, pero para Swift 3 y usando el identificador de restauración para encontrar la pestaña correcta:
private func setTabById(id: String) {
var i: Int = 0
if let controllers = self.tabBarController?.viewControllers {
for controller in controllers {
if let nav = controller as? UINavigationController, nav.topViewController?.restorationIdentifier == id {
break
}
i = i+1
}
}
self.tabBarController?.selectedIndex = i
}
Úselo de esta manera ("Humanos" y "Robots" también deben configurarse en el guión gráfico para viewController específico y su ID de restauración, o use el ID del guión gráfico y marque "usar ID del guión gráfico" como ID de restauración):
struct Tabs {
static let Humans = "Humans"
static let Robots = "Robots"
}
setTabById(id: Tabs.Robots)
Tenga en cuenta que mi tabController enlaza con viewControllers detrás de navigationControllers. Sin navigationControllers se vería así:
if controller.restorationIdentifier == id {