Search code examples
iosswift3uitabbarcontrollerselectedindex

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


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.


Solution

  • 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))")
    }