Switch tab bar programmatically in Swift
Thats pretty simple tabBarController is declared as an optional type
var tabBarController: UITabBarController? { get }
The nearest ancestor in the view controller hierarchy that is a tab bar controller. If the view controller or one of its ancestors is a child of a tab bar controller, this property contains the owning tab bar controller. This property is nil if the view controller is not embedded inside a tab bar controller.
So you just need to add "?" at the end of it:
@IBAction func goToSecond(_ sender: Any) { tabBarController?.selectedIndex = 1}
Swift 3:
func switchToDataTab() { Timer.scheduledTimer(timeInterval: 0.2, target: self, selector: #selector(switchToDataTabCont), userInfo: nil, repeats: false)}func switchToDataTabCont(){ tabBarController!.selectedIndex = 0}
Swift 4+:
func switchToDataTab() { Timer.scheduledTimer(timeInterval: 0.2, target: self, selector: #selector(switchToDataTabCont), userInfo: nil, repeats: false)}@objc func switchToDataTabCont(){ tabBarController!.selectedIndex = 0}
The solution provided by Leo Dabus (see above) works fine for me. However - some controls have bad states. Can't fix that, but this little workaround will do you all good:
func switchToDataTab(){ NSTimer.scheduledTimerWithTimeInterval(0.2, target: self, selector: "switchToDataTabCont", userInfo: nil, repeats: false)}func switchToDataTabCont(){ tabBarController!.selectedIndex = 0}