2015-03-26 4 views
5

Я хочу перейти к определенному контроллеру представления после получения push-уведомления. После навигации навигационный стек должен работать так, как если бы пользователь получил представление вручную.Как перейти к диспетчеру просмотра с уведомлением push

Раскадровка: http://www.xpos.nl/xpos/images/common/storyboard.png

В AppDelegate.swift У меня уже есть:

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) 

} 

Но я получаю сообщение об ошибке, что destinationViewController не является частью окна или, если я правильно, что (пробовать другие ответы на StackOverflow), Ничего не произошло.

+0

откуда ваш 'destinationViewController' приходит от? Нет такого имущества – Azat

ответ

5

TargetViewController не является частью окна, потому что он не был добавлен, просто инициализирован. Исходя из предположения, что navigationViewController является вашим RootViewController, нажмите на свой destinationViewController так:

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) 

} 

Дополнительно: Для того, чтобы подтолкнуть от «Bestellen» до «MessageViewController», а затем выскочить на «Berichten», вам нужно нажать все другие viewControllers между этими двумя, тоже. Для этого нет встроенной функции или алгоритма.

2

Попробуйте

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) 

    } 
Смежные вопросы