Ios 如何在swift中设置选项卡栏控制器的默认选项卡
我是Swift新手,在客观C知识量表上,我的分数约为10分之5 我创建了一个基本的三选项卡Swift应用程序。每个选项卡都有一个关联的swift类文件,例如,FirstViewController.swift,SecondViewController.swift,ThirdViewController.swift 当我选择第三个选项卡时,我现在使用Ios 如何在swift中设置选项卡栏控制器的默认选项卡,ios,swift,uitabbarcontroller,Ios,Swift,Uitabbarcontroller,我是Swift新手,在客观C知识量表上,我的分数约为10分之5 我创建了一个基本的三选项卡Swift应用程序。每个选项卡都有一个关联的swift类文件,例如,FirstViewController.swift,SecondViewController.swift,ThirdViewController.swift 当我选择第三个选项卡时,我现在使用viewdide在ThirdViewController.swift中显示的功能覆盖打开应用程序首选项设置,例如: override func vie
viewdide在ThirdViewController.swift中显示的功能覆盖打开应用程序首选项设置,例如:
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
Brian。如果是选项卡栏应用程序,则应在appdelegate中包含tabbarcontroller变量。
您可以通过在appdelegate中设置该变量的selectedIndex来设置当前选项卡。用户Omkar在上面给出了正确答案。我可以使用ThirdViewController.swft中显示的以下视图成功切换第一个选项卡
override func viewDidAppear(animated: Bool) {
self.tabBarController?.selectedIndex = 0
}
我按照@Paolo Sangregorio的方式按照下面的代码来做
在appdelegate中查找ApplicationIDBecomeActive
函数并添加以下行
let tabBarController = self.window?.rootViewController as! UITabBarController
tabBarController.selectedIndex = 0
如果您使用的是选项卡栏项
Swift 3
@IBVAR选项卡:UITabBar
重写func viewDidLoad(){
…
…
…
tabBar.selectedItem=tabBar.items![newIndex]
}如果你想让他马上来的话。您可以在viewDidLoad()中使用
override func VIEWDIDISPENCE(动画:Bool){self.tabBarController?.selectedIndex=0}我尝试过使用相同的方法,它适用于meThanks Omkar。你能解释一下为什么会这样吗。如果没有可选问号,编译器将声明“UITabController?”?没有名为selectedIndex'的成员。虽然在运行时,似乎有一个存在。swift和optionals的新功能。如果您有任何见解,我们将不胜感激。更正:这有点奏效。第一次打开应用程序设置时,不会列出应用程序用户首选项。第二次也是以后我选择选项卡并打开应用程序设置时,所有设置现在都列出了——尽管系统首选项存在。这似乎是应用程序设置同步问题。我在网站上发布了一个关于应用程序设置的单独问题,请添加一个解释,使其更易于理解。
//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
}
}
override open func viewDidLoad() {
super.viewDidLoad()
// Set Default tab
self.selectedIndex = 1
}