2017-09-22 3 views
0

Ich stehe schnelle Aktionen für eine App auf. Es funktioniert gut. So in AppDelegate Ich bin Überprüfung für die shortcutItem wie diese und rufen eine completionHandler Funktion:Swift: Wie kann ich von AppDelegate aus mit Quick Actions auf eine bestimmte TabBar-Registerkarte zugreifen?

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

    completionHandler(handleShortcut(shortcutItem: shortcutItem)) 
} 

Nun würde Ich mag eine bestimmte Registerkarte in der handleShortcut Funktion öffnen, aber dies überhaupt nicht funktioniert. Ich habe versucht, es als eine Ansicht Laden mit er storyboardID ist und als RootViewController hinzufügen, aber ich bin nicht einmal sicher, ob dies überhaupt funktionieren würde oder ob dies der richtige Weg, es zu tun:

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() 

Aber offensichtlich I kann zum Beispiel nicht tabBarController?.selectedIndex = 2 verwenden, um auf die dritte Registerkarte zuzugreifen.

Was wäre der richtige Weg, um eine andere Registerkarte in meinem TabBarController (und zeigen Sie es) durch Quick Actions?

Antwort

0

ich zu einer Lösung gekommen sind, aber ich bin nicht sicher, ob dies der beste Weg, es zu tun ist:

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() 
     } 
Verwandte Themen