स्टुअर्ट क्लार्क के समाधान की तरह लेकिन स्विफ्ट 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
}
इसे इस तरह से उपयोग करें ("ह्यूमन" और "रोबोट" को विशिष्ट व्यू कॉन्ट्रोलर के लिए स्टोरीबोर्ड में भी सेट किया जाना चाहिए और यह रीस्टोरेशन आईडी है, या स्टोरीबोर्ड आईडी का उपयोग करें और "स्टोरीबोर्ड आईडी का उपयोग करें" को रीस्टोरेशन आईडी के रूप में देखें):
struct Tabs {
static let Humans = "Humans"
static let Robots = "Robots"
}
setTabById(id: Tabs.Robots)
कृपया ध्यान दें कि मेरा टैबकंट्रोलर नेविगेशनकंट्रोलर के पीछे देखने के लिए लिंक करता है। बिना नेविगेशनकंट्रोलर के यह इस तरह दिखेगा:
if controller.restorationIdentifier == id {