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

时间:2015-01-22 21:37:03

标签: xcode swift uitabbarcontroller

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

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

tababarController.selectedIndex = 1

没有成功。

4 个答案:

答案 0 :(得分:100)

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

var tabBarController: UITabBarController? { get }
  

视图控制器层次结构中最近的祖先是标签栏   控制器。如果视图控制器或其祖先之一是孩子   标签栏控制器,此属性包含拥有标签栏   控制器。如果视图控制器不是,则此属性为nil   嵌入在标签栏控制器中。

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

@IBAction func goToSecond(_ sender: Any) {
    tabBarController?.selectedIndex = 1
}

答案 1 :(得分:8)

更新了Anthony对Swift3的回答

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

func switchToDataTabCont(){
    tabBarController!.selectedIndex = 0
}

答案 2 :(得分:3)

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

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

func switchToDataTabCont(){
    tabBarController!.selectedIndex = 0
}

答案 3 :(得分:1)

添加到Anthony的代码:

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

func switchToDataTabCont(){
    tabBarController!.selectedIndex = 0
}

选择器类已更改为

#selector(switchToDataTabCont)