在Swift中以编程方式切换选项卡栏

Aza*_*lla 47 xcode uitabbarcontroller swift

我有一个标签栏应用程序,我在我的第一个视图上有一个按钮,我想在按下时在标签栏中以编程方式切换到我的第二个标签.

我似乎无法弄清楚如何让索引等切换到它我尝试过这样的东西.

tababarController.selectedIndex = 1
Run Code Online (Sandbox Code Playgroud)

没有成功.

Leo*_*bus 103

这很简单的tabBarController被声明为可选类型

var tabBarController: UITabBarController? { get }
Run Code Online (Sandbox Code Playgroud)

视图控制器层次结构中最近的祖先是标签栏控制器.如果视图控制器或其祖先之一是选项卡栏控制器的子项,则此属性包含拥有选项卡栏控制器.如果视图控制器未嵌入标签栏控制器内,则此属性为nil.

所以你只需要添加"?" 最后:

@IBAction func goToSecond(_ sender: Any) {
    tabBarController?.selectedIndex = 1
}
Run Code Online (Sandbox Code Playgroud)


小智 9

更新了Anthony对Swift3的回答

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

func switchToDataTabCont(){
    tabBarController!.selectedIndex = 0
}
Run Code Online (Sandbox Code Playgroud)


小智 6

Leo Dabus提供的解决方案(见上文)对我来说很好用。但是-一些控件的状态很差。无法解决此问题,但是这个小解决方法对您都有好处:

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

func switchToDataTabCont(){
    tabBarController!.selectedIndex = 0
}
Run Code Online (Sandbox Code Playgroud)