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
}