簡體   English   中英

如何在swift中設置標簽欄控制器的默認選項卡

[英]How do I set the default tab for tab bar controller in swift

我是Swift的新手,在Objective-C知識量表上大約有五分之一的人。

我創建了一個基本的三個標簽Swift應用程序。 每個選項卡都有一個關聯的swift類文件,例如FirstViewController.swiftSecondViewController.swiftThirdViewController.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

由於UIViewControllerThirdViewController類的沒有一個tabBarController

布萊恩。

用戶Omkar在上面回答了正確答案。 我可以使用ThirdViewController.swft中的以下viewDidAppear成功切換第一個選項卡

override func viewDidAppear(animated: Bool) {         
    self.tabBarController?.selectedIndex = 0     
}

我按照@Paolo Sangregorio方式執行以下代碼

在appdelegate中找到applicationDidBecomeActive函數並添加這一行

let tabBarController = self.window?.rootViewController as! UITabBarController
tabBarController.selectedIndex = 0
//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
    }
}

如果它是標簽欄應用程序,您應該在appdelegate中使用tabbarcontroller變量。 您可以通過在appdelegate上設置該變量的selectedIndex來設置當前選項卡。

如果您使用Tab欄項目

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

override func viewDidLoad(){
...
...
...
tabBar.selectedItem = tabBar.items![newIndex]

}

如果你想讓他毫不拖延地來。 喲可以在viewDidLoad()中使用

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

    // Set Default tab
    self.selectedIndex = 1
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM