Як і рішення Стюарта Кларка, але для Swift 3 та використання ідентифікатора відновлення для пошуку правильної вкладки:
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
}
Використовуйте його так ("Люди" та "Роботи" також потрібно встановити в табло для конкретного viewController та його ідентифікатор відновлення, або використовувати ідентифікатор Storyboard та встановити прапорець "використовувати ідентифікатор розкадрування" як ідентифікатор відновлення):
struct Tabs {
static let Humans = "Humans"
static let Robots = "Robots"
}
setTabById(id: Tabs.Robots)
Зауважте, що моя вкладка Контролер посилається на перегляд контролерів за навігаційними контролерами. Без навігаційних контролерів це виглядатиме так:
if controller.restorationIdentifier == id {