Switch tab bar programmatically in Swift

匿名 (未验证) 提交于 2019-12-03 01:18:02

问题:

I have a tab bar application and i have a button on my first view which i want to when pressed switch to my second tab programmatically in the tab bar.

I can't quite seem to figure it out how to get the index etc to switch to it i've tried stuff like this.

tababarController.selectedIndex = 1 

With no success.

回答1:

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: AnyObject) {     tabBarController?.selectedIndex = 1 } 


回答2:

Updated Anthony's answer for Swift3

func switchToDataTab() {     Timer.scheduledTimer(timeInterval: 0.2, target: self, selector: #selector(switchToDataTabCont), userInfo: nil, repeats: false) }  func switchToDataTabCont(){     tabBarController!.selectedIndex = 0 } 


回答3:

The solution provided by Leo Dabus (see above) works fine for me. However - some controls have bad states. Can't fix that, but this little workaround will do you all good:

func switchToDataTab(){     NSTimer.scheduledTimerWithTimeInterval(0.2,         target: self,         selector: "switchToDataTabCont",         userInfo: nil,         repeats: false) }  func switchToDataTabCont(){     tabBarController!.selectedIndex = 0 } 


回答4:

Add to Anthony's code:

func switchToDataTab(){     NSTimer.scheduledTimerWithTimeInterval(0.2, target: self, selector: #selector(switchToDataTabCont), userInfo: nil,repeats: false) }  func switchToDataTabCont(){     tabBarController!.selectedIndex = 0 } 

Where the selector class has been changed to

#selector(switchToDataTabCont) 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!