Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在swift中设置选项卡栏控制器的默认选项卡_Ios_Swift_Uitabbarcontroller - Fatal编程技术网

Ios 如何在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

我是Swift新手,在客观C知识量表上,我的分数约为10分之5

我创建了一个基本的三选项卡Swift应用程序。每个选项卡都有一个关联的swift类文件,例如,FirstViewController.swiftSecondViewController.swiftThirdViewController.swift

当我选择第三个选项卡时,我现在使用
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
}