如何在swift中设置标签栏控制器的默认选项卡

时间:2014-10-20 05:27:04

标签: ios swift uitabbarcontroller

我是Swift的新手,在 Objective-C 知识量表中大约有五分之一。

我创建了一个基本的三个标签Swift应用程序。每个标签都有一个相关的swift类文件,例如 FirstViewController.swift SecondViewController.swift ThirdViewController.swift

当我选择第三个标签时,我现在使用 ThirdViewController.swift 中的viewDidAppear函数覆盖打开应用程序首选项设置,例如:

override func viewDidAppear(animated: Bool) {
    // open app preference s
    if let url = NSURL(string:UIApplicationOpenSettingsURLString) {
        UIApplication.sharedApplication().openURL(url)
    }
}

但是,在打开首选项之前,我想将活动标签设置回第一个标签。如何在Swift中优雅地完成。

以下不起作用:

self.tabBarController.selectedIndex = 0

由于 ThirdViewController 类的UIViewController没有tabBarController

布赖恩。

6 个答案:

答案 0 :(得分:8)

用户Omkar在上面回答了正确答案。我可以使用ThirdViewController.swft

中的以下viewDidAppear成功切换第一个选项卡
override func viewDidAppear(animated: Bool) {         
    self.tabBarController?.selectedIndex = 0     
}

答案 1 :(得分:5)

我跟着@Paolo Sangregorio方式执行以下代码

在appdelegate中查找applicationDidBecomeActive函数并添加以下行

let tabBarController = self.window?.rootViewController as! UITabBarController
tabBarController.selectedIndex = 0

答案 2 :(得分:1)

//Use viewWillAppear (instead of) viewDidAppear to prevent a screen flicker


var freshLaunch = true
override func viewWillAppear(animated: Bool) {
    if freshLaunch == true {
        freshLaunch = false
        self.tabBarController.selectedIndex = 2
    }
}

答案 3 :(得分:0)

如果它是标签栏应用程序,您应该在appdelegate中使用tabbarcontroller变量。 您可以通过在appdelegate上为该变量设置selectedIndex来设置当前选项卡。

答案 4 :(得分:0)

如果您使用标签栏项目

斯威夫特3
 @IBOutlet weak var Tabbar:UITabBar!

覆盖func viewDidLoad(){
... ...
...

tabBar.selectedItem = tabBar.items![newIndex]

}

答案 5 :(得分:0)

如果您希望他不迟到。可以在viewDidLoad()中使用

override open func viewDidLoad() {
    super.viewDidLoad()

    // Set Default tab
    self.selectedIndex = 1
}