Giống như giải pháp của Stuart Clark nhưng dành cho Swift 3 và sử dụng định danh phục hồi để tìm tab chính xác:
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
}
Sử dụng nó như thế này ("Con người" và "Rô bốt" cũng phải được đặt trong bảng phân cảnh cho chế độ xem cụ thể và đó là ID khôi phục hoặc sử dụng ID Storyboard và kiểm tra "sử dụng ID bảng phân cảnh" làm ID phục hồi):
struct Tabs {
static let Humans = "Humans"
static let Robots = "Robots"
}
setTabById(id: Tabs.Robots)
Xin lưu ý rằng tabControll của tôi liên kết đến viewControllers đằng sau navigationControllers. Nếu không có navigationControllers thì nó sẽ như thế này:
if controller.restorationIdentifier == id {