เช่นเดียวกับโซลูชันของ Stuart Clark แต่สำหรับ 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 เฉพาะและเป็นรหัสการคืนค่าหรือใช้สตอรีบอร์ด ID และทำเครื่องหมาย "ใช้สตอรีบอร์ด ID" เป็นรหัสการเรียกคืน):
struct Tabs {
static let Humans = "Humans"
static let Robots = "Robots"
}
setTabById(id: Tabs.Robots)
โปรดทราบว่าแท็บตัวควบคุมของฉันเชื่อมโยงไปยังมุมมองตัวควบคุมที่อยู่เบื้องหลังระบบนำทางตัวควบคุม หากไม่มีการนำทางตัวควบคุมมันจะมีลักษณะเช่นนี้:
if controller.restorationIdentifier == id {