2016-05-04 8 views
0

Hier ist, was ich versuche zu tun. Wenn ich die Push-Benachrichtigung erhalte und ich tippe, möchte ich in meiner App einen bestimmten Bildschirm anzeigen. Ich habe viel darüber herausgefunden, aber ich habe Probleme wegen der Komplexität der Struktur meiner Anwendung. Hier ist , wie die App strukturiert:Push-Benachrichtigung öffnen bestimmte Bildschirm in TabBarController NavigationController laveViewController

Ich möchte einige Argumente an die DetailViewContorller übergeben, damit ich sicherstellen kann, dass ich die richtigen Ergebnisse beim Öffnen des Bildschirms erhalten. Hier ist der Screenshot meiner app Struktur application Folow

Mit dem folgenden Code in meinem AppDelegate:

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
let tb = storyboard.instantiateViewControllerWithIdentifier("TabBarVC") as! UITabBarController 
tb.selectedIndex = 1 
window?.rootViewController? = tb 

ich es geschafft haben, die Tabbar zu erhalten, wenn auf die Benachrichtigung tippen, aber ich bin nicht glücklich mit der Ergebnisse. Ich habe immer noch die folgenden Probleme:

  1. die revealViewController ist gleich Null, so bin ich nicht in der Lage meine Einstellung Panel
  2. öffnen ich immer noch nicht auf die DetailViewController, die am unteren Rand meiner Ansicht Hierarchie ist

Jeder Hinweis wird geschätzt.

Antwort

0

@MK_Dev, Danke für Ihren Vorschlag, aber ich war auf der Suche nach etwas leichter zu verwalten.

Das hat mir tatsächlich geholfen. Hier Get top most UIViewController

ist das, was ich getan habe:

if var topControl = UIApplication.sharedApplication().keyWindow?.rootViewController { 
      while let presentedContreller = topControl.presentedViewController{ 
       topControl = presentedContreller 
      } 
      if topControl.childViewControllers[0].isKindOfClass(MyCustomClassVC) { 
      // Check if the user is already on the VC we are trying to open 
       let chatController = topControl.childViewControllers[0] as! MyCustomClassVC 
// ... any additional code you need to add here ... 
    } 
} 
0

Ich hatte ein ähnliches Problem, obwohl mein Flow ein bisschen anders war. Am Ende habe ich das Push Notification-Ereignis behandelt (wenn der Benutzer darauf klickt) und das Objekt auf der Ebene der App-Delegierten gespeichert. In jedem View-Controller, der danach erschien (in der ViewDidLoad() -Methode), würde ich nach diesem Objekt suchen und herausfinden, ob der Fluss zum nächsten View-Controller umgeleitet werden soll. Um zu helfen, hatten meine Benachrichtigungen einen Typ, der ihnen zugeordnet wurde. Leider konnte ich keine bessere Lösung finden.

P.S. Es sieht auch so aus, als würden Sie View-Controller in Code instanziieren und ich habe Storyboards verwendet. Die Grundidee ist jedoch die gleiche. Ich beendete

Verwandte Themen