Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 612
bill Avatar asked Jan 03 '17 05:01

bill


2 Answers

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))")
}
like image 142
Vishnu gondlekar Avatar answered Sep 28 '22 22:09

Vishnu gondlekar


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)))")
}
like image 20
Alessandro Ornano Avatar answered Sep 29 '22 00:09

Alessandro Ornano