Программно отобразить дочерний ViewController элемента TabBar (и передать данные) - PullRequest
0 голосов
/ 08 февраля 2019

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

Я использую FCM, поэтому я реализовал необходимые функции в AppDelegate.

Затем я реализовал перенаправление на контроллер представления при нажатии на уведомление (в userNotificationCenter (_ center: UNUserNotificationCenter, didReceive ответ: UNNotificationResponse, withCompletionHandler завершениюHandler: @escaping () -> Void) method).

Мое приложение имеет tabBarController с 4 контроллерами представления (Действия -> TableView, События, В продаже, Мой город).Мне удалось отобразить My City ViewController, но я не знаю, как передавать данные.

Затем я также хотел бы, чтобы в некоторых уведомлениях отображалось одно действие (Операции ВК -> одно действие).Мне удалось отобразить ВК действий, но ни одного занятия

// Display 'My City' without passing data (something I would like to do)

self.window = UIWindow(frame: UIScreen.main.bounds)
let storyboard:UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let tabBar:UITabBarController = storyboard.instantiateViewController(withIdentifier: "tabBar") as! UITabBarController
tabBar.selectedIndex = 4
self.window?.rootViewController = tabBar
self.window?.makeKeyAndVisible()


// Display Single activity (without the Navigation Controller Top Bar and the bottom Tab Bar; and without passing data => 2 issues)
self.window = UIWindow(frame: UIScreen.main.bounds)
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let viewController = storyboard.instantiateViewController(withIdentifier: "SingleActivityVC")
self.window?.rootViewController = viewController
self.window?.makeKeyAndVisible()

Так что, когда я нажимаю на уведомление, оно работает, отображаются две эти страницы, но:

1- Для 'МойГород ', я не могу передать данные с моим текущим кодом

2- Для одного вида деятельности ВК: я не могу передать данные и не знаю, как сохранить элементы навигации (верхняя и нижняя панели)

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Для вашего второго вопроса, панель навигации и панель вкладок не отображаются, потому что вы только создаете экземпляр SingleActivityVC и устанавливаете его в качестве корневого.Вместо этого вам нужно создать экземпляр родительского контроллера панели вкладок, выбрать индекс вкладки, который содержит нужный контроллер представления действий, а затем вызвать на нем метод, который отправит вас в искомый SingleActivityVC.

Из вашего кода:

`let tabBar: UITabBarController = storyboard.instantiateViewController (withIdentifier:" tabBar ") как!UITabBarController

tabBar.selectedIndex = 4

если let item = tabBar.viewControllers? [TabBar.selectedIndex] как?SomeViewController {item.goToSingleActivity (with: "некоторые данные")} `

0 голосов
/ 20 февраля 2019

Возможно, попробуйте передать данные в «Мой город»

self.window = UIWindow(frame: UIScreen.main.bounds)
let storyboard:UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let tabBar:UITabBarController = storyboard.instantiateViewController(withIdentifier: "tabBar") as! UITabBarController
tabBar.selectedIndex = 4

let myCityVC = tabBar.viewControllers![3] as! myCityViewController
myCityVC.myProperty = awesomeValue

self.window?.rootViewController = tabBar
self.window?.makeKeyAndVisible()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...