tab bar did select delegate methods give the previously selected tab index in ios, swift 3

8.1k Views Asked by At

I'm trying to detect which tab selected by the user, realtime. as an example, if user selecte 0 th index, at the same time I want to get that user has selected the zeroth index tab. so for that , I used tabbarcontroller delegate method like below.

override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {

        print("the selected index is : \(selectedIndex)")
    }

but this shows the previous view controller.as an example think I'm in second tab and then I select the first tab then this prints the index as 2.so how can I get the correct selected tab. hope your help with this.

2

There are 2 best solutions below

1
On BEST ANSWER

You can get index of selected UITabBarItem by getting position of that particular item from array of items in UITabBar. Try this out

override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
    print("the selected index is : \(tabBar.items.index(of: item))")
}
0
On

Swift 3.1:

 override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
     guard let items = tabBar.items else { return }
     print("the selected index is : \(String(describing: items.index(of: item)))")
}