2015-06-29 3 views
0

У меня есть приложение, которое в настоящее время использует push-уведомления, и мы начали пытаться открыть определенные страницы приложения из JSON-push.Меню Burger не загружается при открытии viewcontroller из push

Это код для одного из возможных страниц, чтобы открыть:

//Extract the notification data 
    if let notificationPayload = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? NSDictionary { 
     // Get which page to open 
     let viewload = notificationPayload["view"] as? NSString 
     let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil) 
     //Load correct view 
        if viewload == "videos" { 
      let mainStoryboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
      let initialViewController : UIViewController = mainStoryboard.instantiateViewControllerWithIdentifier("Videos") as! UIViewController 
      self.window = UIWindow(frame: UIScreen.mainScreen().bounds) 
      self.window?.rootViewController = initialViewController 
      self.window?.makeKeyAndVisible() 
     } 
    } 

Проблема заключается в том, что при этом пропускает ViewController, что позволяет меню гамбургер, чтобы открыть в стороне.

Есть ли способ открыть контроллер меню для гамбургера и загрузить правильный вид из нажатия?

Если вам нужна дополнительная информация, дайте мне знать, я буду размещать обновления по мере необходимости

+0

Почему вы создаете новое окно? – Wain

+0

Я не могу найти вопрос, но это было предложено в ответ на аналогичную проблему. Из того, что я понял, это манипулирование окном, а не создание, но я вижу, что, возможно, ошибался в том, что он перечитывал его. – Lister

+0

Я нашел предыдущий вопрос, это был один из моих! Показывает вам свою замечательную память: http://stackoverflow.com/questions/30592521/opening-view-controller-from-app-delegate-using-swift – Lister

ответ

0

Вы вообще не должны создавать новое окно и настройки контроллера просмотра корневой. По крайней мере, если вы не делаете контроллер корневого представления истинным корневым VC для своего приложения и попросите его отобразить ваш конкретный контент с помощью push.

Как правило, ваш корень VC должен понимать, что может возникнуть необходимость показать конкретный VC (от push или где-то еще) и предложить делегату приложения способ сделать это. Это может быть достигнуто путем перенаправления запроса до тех пор, пока некоторые VC не смогут его обработать, он может просто нажимать его на навигационный контроллер, он может размещать уведомление или может представлять модальный.

Существует много потенциальных вариантов, вам нужно решить, что подходит для вашего приложения, но важная часть заключается в том, что он связан с вашей существующей иерархией представлений, а не заменяет ее.

+0

Первое, что выскочил на мою, я мог бы создать переменную при открытии который хранит загружаемую страницу, и переходите через соответствующие контроллеры представления, пока я не удару, где я хочу загрузить? И если это вариант, будет ли увеличено время загрузки/вспышки страниц? – Lister

+0

Это зависит от анимации между контроллерами, которых вы хотите избежать ... – Wain

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