Я разрабатываю приложение для обмена сообщениями, и у меня возникают проблемы с реализацией поведения push-уведомлений.
Я хочу, чтобы, когда пользователь нажимает на уведомление, открывается диалог этой группы. Но для возврата к списку контактов должна быть панель навигации.
Я уже знаю, как извлечь информацию из уведомления, чтобы получить имя контакта. Я пытаюсь это сделать в функции didReceive на AppDelegate.
Пока что я попробовал:
let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ChatViewController") as! ChatViewController
vc.contactName = name as String
self.window = UIWindow(frame: UIScreen.main.bounds)
self.window?.rootViewController = vc
self.window?.makeKeyandVisible()
При этом открывается правильный разговор, и появляются сообщения, но элементы пользовательского интерфейса не реагируют (не могут писать при нажатии на текстовое поле, не могут перейти в галерею при нажатии кнопки и т. Д.), А также отсутствует панель навигации.
Итак, после некоторого исследования я попробовал это:
let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ChatViewController") as! ChatViewController
vc.contactName = name as String
let rootViewController = self.window?rootViewController as! UINavigationController
rootViewController. pushViewController(vc, animated: true)
Это не работает. Нет сообщения об ошибке, но экран просто белый.
Это моя раскадровка:
Я использую SWRevealViewController для бокового меню, а в разделе сообщений есть вкладка BarController со списком контактов на вкладке 2º.
РЕДАКТИРОВАТЬ: При втором способе возникает ошибка.
Не удалось привести значение типа 'SWRevealViewController к UINavigationController'