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

2

5

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.

Vandervelde answered 3/1, 2017 at 5:20 Comment(1)
checkout my answer.Subbase
B
10

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))")
}
Bangui answered 3/1, 2017 at 5:38 Comment(1)
thanx and nice.Vandervelde
M
4

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)))")
}
Modification answered 23/6, 2017 at 14:55 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.