2016-08-01 33 views
0

Meine App hat 5 Tab-Leiste und jedes Mal, wenn ich Push-Benachrichtigungen erhalte, möchte ich die App zum 3. Tab im Index navigieren. Ich kann es erreichen, wenn die App im Vordergrund oder Hintergrund (im aktiven Zustand) ist. Wenn die App geschlossen ist und ich versuche, die Push-Benachrichtigung zu öffnen, öffnet sich die App und stürzt ab. Unten finden Sie den Code, die ichIOS Swift-App öffnet nicht den spezifischen Tab-Controller-Index, wenn Push-Benachrichtigung empfangen wird

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) 
{ 
    let tabbar:UITabBarController = self.window?.rootViewController as! UITabBarController 
    tabbar.selectedIndex = 3 
} 

Bitte lassen Sie mich haben wissen, was ich falsch mache.

Antwort

1

Versuchen Sie, die folgenden Code am Ende der diFinishLaunchingWithOptions Methode ergänzt:

if let notification = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? [String : AnyObject] { 
      _ = notification["aps"] as! [String : AnyObject] 

      (window?.rootViewController as! UITabBarController).selectedIndex = 3 
     } 
+0

Ich erhalte den folgenden Fehler, wenn ich am Ende von DiFinishLaunchingWithOptions hinzugefügt habe ** Verwendung von undeclared Typ 'UITabbarController' ** – vanquish

+0

Sorry, ein Tippfehler. Es sollte "TabBar" mit einem Großbuchstaben B sein. –

+0

das ist der genaue Code, den ich habe immer noch den gleichen Fehler 'wenn lassen Benachrichtigung = launchOptions? [UIApplicationLaunchOptionsRemoteNotificationKey] als? [String: AnyObject] { _ = Benachrichtigung ["aps"] as! [String: ANYOBJECT] (Fenster .rootViewController als UITabBarController?!) .setSelectIndex = 3 } ' ** AppDelegate.swift: 96: 42: Wert des Typs 'UITabBarController' hat kein Mitglied 'setSelectIndex' ** – vanquish

1

Sind Sie Ihren Code debuggen? Wenn die App dort abstürzt, kann es sehr wahrscheinlich sein, dass der window.rootViewController kein UITabBarController ist.

Sie können entweder debuggen oder die as ändern! in als? Und:

tabbar?.selectedIndex = 3 

Wenn die App nicht abstürzt, Tab-Leiste Controller woanders ist. Finde es einfach.

Denken Sie auch daran, im Optionsverzeichnis nach Ihrer Benachrichtigung zu suchen.

+0

Sie hatten Recht über die getrennte Tabbar-Controller. Ich musste eine Verzögerung hinzufügen, damit der Code funktioniert. Vielen Dank – vanquish

+0

Sie sind herzlich willkommen –

+0

@AlessandroRanaldi Wie hast du das gemacht, könntest du da meine App als abgestürzt –