Switch tab bar programmatically in Swift Switch tab bar programmatically in Swift swift swift

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}