2015-03-26 24 views
5

Chciałbym przejść do określonego kontrolera widoku po otrzymaniu powiadomienia wypychania. Po nawigacji stos nawigacyjny powinien działać tak, jakby użytkownik dostał się do widoku ręcznie.Jak nawigować, aby wyświetlić kontroler w powiadomieniu push

Storyboard: http://www.xpos.nl/xpos/images/common/storyboard.png

W AppDelegate.swift już mam:

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) { 

    println("didReceiveRemoteNotification") 

    let storyboard = UIStoryboard(name: "Main", bundle: nil) 

    let destinationViewController = storyboard.instantiateViewControllerWithIdentifier("MessageViewController") as MessageViewController 

    let navigationController = self.window?.destinationViewController; 

    navigationController?.pushViewController(destinationViewController, animated: false, completion: nil) 

} 

Ale pojawia się błąd, że destinationViewController nie jest częścią okna albo jeśli mam rację, że (stara inne odpowiedzi na StackOverflow), nic się nie dzieje.

+0

skąd twój 'destinationViewController' pochodzi? Nie ma takiej własności – Azat

Odpowiedz

5

Obiekt docelowyViewController nie jest częścią okna, ponieważ nie został dodany, tylko zainicjowany. Opiera się na założeniu, że navigationViewController jest Twój rootViewController wcisnąć do destinationViewController tak:

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) { 

    println("didReceiveRemoteNotification") 

    let storyboard = UIStoryboard(name: "Main", bundle: nil) 

    let destinationViewController = storyboard.instantiateViewControllerWithIdentifier("MessageViewController") as MessageViewController 

    let navigationController = self.window?.rootViewController as! UINavigationController 

    navigationController?.pushViewController(destinationViewController, animated: false, completion: nil) 

} 

Dodatkowo: Aby przesunąć z „bestellen” do „MessageViewController”, a następnie pop do „Berichten”, trzeba wcisnąć wszystko inne viewControllers między tymi dwoma też. Nie ma wbudowanej funkcji ani algorytmu.

2

Spróbuj

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) { 

    println("didReceiveRemoteNotification") 

    let storyboard = UIStoryboard(name: "Main", bundle: nil) 

    let destinationViewController = storyboard.instantiateViewControllerWithIdentifier("MessageViewController") as MessageViewController 

    self.window?.rootViewController?.presentViewController(destinationViewController, animated: True, completion:nil) 

    } 
Powiązane problemy