我是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
。
布赖恩。
答案 0 :(得分:8)
用户Omkar在上面回答了正确答案。我可以使用ThirdViewController.swft
中的以下viewDidAppear成功切换第一个选项卡override func viewDidAppear(animated: Bool) {
self.tabBarController?.selectedIndex = 0
}
答案 1 :(得分:5)
我跟着@Paolo Sangregorio方式执行以下代码
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
}