it-swarm.com.ru

Как установить вкладку по умолчанию для контроллера панели вкладок в swift

Я новичок в Swift, и примерно 5 из 10 в Objective-C шкала знаний ..

Я создал базовое приложение с тремя вкладками Swift. Каждая вкладка имеет связанный файл класса Swift, например FirstViewController.Swift, SecondViewController.Swift, ThirdViewController.Swift.

Когда я выбираю третью вкладку, я теперь открываю настройки предпочтений приложения с помощью переопределения функции viewDidAppear в 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

Поскольку UIViewController класса ThirdViewController не имеет tabBarController.

Брайан.

7
kauai

Пользователь Omkar ответил выше с правильным ответом. Я могу успешно переключить первую вкладку, используя следующий viewDidAppear в ThirdViewController.swft

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

Я следовал пути @Paolo Sangregorio Код, чтобы сделать это следующим образом

в appdelegate найдите функцию applicationDidBecomeActive и добавьте эти строки

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

Если вы используете панель вкладок

Swift
@ IBOutlet слабый вар Tabbar: UITabBar!

переопределить func viewDidLoad () {
...
...
...
tabBar.selectedItem = tabBar.items! [newIndex]

}

0
anson

Если это приложение панели вкладок, вы должны иметь переменную tabbarcontroller в вашем appdelegate. Вы можете установить текущую вкладку, установив selectedIndex для этой переменной из приложения appdelegate.

0
Paolo Sangregorio