Я использую динамические ссылки Firebase и следую вместе с онлайн-видео Firebase.После обработки входящего URL-адреса я хочу направить пользователя на определенную страницу в приложении.Моя структура приложения выглядит следующим образом.
UITabBarController в качестве rootViewController с 3 вкладками -> UINavigationController -> UIViewController (все сделано в раскадровках)
как видно:
Когда я получаю определенный URL, я хочу затем перейти на первую вкладку с некоторыми данными, а затем оттуда отправить пользователя на правильную страницу.Это гарантирует, что пользователь все еще сможет вернуться через навигацию.
Я пытался добиться этого через это:
var storyBoard = UIStoryboard()
storyBoard = UIStoryboard(name: "Main", bundle: nil)
let tabViewController = storyBoard.instantiateViewController(withIdentifier: "tabBar") as! TabBar
let homeVC = storyBoard.instantiateViewController(withIdentifier: "homePage") as! NewHomeViewController
homeVC.navigatorItem = DeepLinkItem(listId: mediaID, itemId: itemID)
let appdelegate = UIApplication.shared.delegate as! AppDelegate
appdelegate.window!.rootViewController = tabViewController
С помощью строки homeVC.navigatorItem = DeepLinkItem(listId: mediaID, itemId: itemID)
я вижу, что данныебыл задан из-за того, что все мои операторы печати от других контроллеров представления находятся в очереди, однако я все еще застрял на homePage (первое представление на панели вкладок), и пользователь не перенаправлен на правильную страницу.
Кто-нибудь знает, как маршрутизировать другой контроллер представления из делегата приложения, сохраняя панель вкладок в качестве корневого элемента.Спасибо.
Это то, что мне нужно:
Итак, из приложения Delegate я хочу перейти с панели вкладокк контроллеру навигации, затем к первому контроллеру представления вплоть до конечного контроллера просмотра, следя за тем, чтобы я сохранил путь навигации.Что я делаю, так это передаю данные первому контроллеру представления, затем прохожу через каждый.Но это не работает.Я думаю, что это связано с делегатом приложения, где я устанавливаю контроллер корневого представления.Спасибо.
РЕДАКТИРОВАТЬ
Я нашел этот ответ на пост, похожий на мой.
Мой код теперь выглядит так:
let mainStoryBoard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let tabBarController = mainStoryBoard.instantiateViewController(withIdentifier: "tabBar") as! UITabBarController
let homeNavigationController = tabBarController.viewControllers?.first as! UINavigationController
let homeView = mainStoryBoard.instantiateViewController(withIdentifier: "homePage") as! NewHomeViewController
homeView.navigatorItem = DeepLinkItem(listId: mediaID, itemId: itemID)
homeNavigationController.pushViewController(homeView, animated: false)
self.window = UIWindow(frame: UIScreen.main.bounds)
self.window?.rootViewController = tabBarController
self.window?.makeKeyAndVisible()
На данный момент он не работает, просто пустой белый экран с панелью вкладок.Однако, изменение корневого контроллера представления на homeNavigationController
работает, его просто нет панели вкладок.