2017-09-22 4 views
0

Je mets en place des actions rapides pour une application. Ça fonctionne bien. Donc, en AppDelegate je vérifie le shortcutItem comme celui-ci et appeler une fonction completionHandler:Swift: Comment accéder à un certain onglet TabBar depuis AppDelegate avec des actions rapides?

func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) { 

    completionHandler(handleShortcut(shortcutItem: shortcutItem)) 
} 

Maintenant, je voudrais ouvrir un certain onglet dans la fonction HandleShortCut, mais cela ne fonctionne pas du tout. J'ai essayé de le charger en vue avec ses storyboardID et l'ajouter comme RootViewController, mais je ne suis même pas sûr que cela fonctionnerait tout ou si cela est la bonne façon de le faire:

let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle:nil) 
    let vc = storyBoard.instantiateViewController(withIdentifier: "tabBar") 
    self.window = UIWindow(frame: UIScreen.main.bounds) 
    self.window?.rootViewController = vc 
    self.window?.makeKeyAndVisible() 

Mais évidemment, je ne peut pas utiliser tabBarController?.selectedIndex = 2 par exemple pour accéder au troisième onglet.

Quelle serait la bonne façon d'accéder à un autre onglet de mon tabBarController (et de le montrer) grâce à des actions rapides?

Répondre

0

Je suis venu à une solution, mais je ne suis pas sûr que ce soit la meilleure façon de le faire:

if shortcutItem.type == "com.xxx.openHelp" { 
      let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle:nil) 
      let vc = storyBoard.instantiateViewController(withIdentifier: "tabBar") 
      self.window = UIWindow(frame: UIScreen.main.bounds) 
      self.window?.rootViewController = vc 
      let myTabBar = self.window?.rootViewController as! UITabBarController 
      myTabBar.selectedIndex = 3 
      self.window?.makeKeyAndVisible() 
     }