Seperti solusi Stuart Clark tetapi untuk Swift 3 dan menggunakan pengidentifikasi restorasi untuk menemukan tab yang benar:
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
}
Gunakan seperti ini ("Manusia" dan "Robot" juga harus diatur dalam storyboard untuk viewController tertentu dan ID Pemulihannya, atau gunakan ID Storyboard dan centang "gunakan storyboard ID" sebagai ID pemulihan):
struct Tabs {
static let Humans = "Humans"
static let Robots = "Robots"
}
setTabById(id: Tabs.Robots)
Harap perhatikan bahwa tabController saya terhubung ke viewControllers di belakang navigationControllers. Tanpa navigationControllers akan terlihat seperti ini:
if controller.restorationIdentifier == id {