Открыть определенный View Controller в Swift - PullRequest
0 голосов
/ 03 октября 2018

Я реализовал firebase notification в своем приложении.Когда я нажимаю на уведомление, я хочу открыть конкретный VC.Иерархия vc такова:

TabBarController -> TabBarVC1 -> 1VC -> 2VC

Теперь я хочу перейти к 2VC, когда нажимаю на уведомление.Я пробовал код, он идет нормально, но иерархия VC мешает, когда я туда переезжаю, он не возвращается.Вот как я открываю 2VC.

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "2VC")
self.present(controller, animated: true, completion: nil)

Я хочу, чтобы он открыл 2VC, но его иерархия не должна беспокоить.Когда я нажимаю кнопку «Назад» на 2VC, она должна вернуться на 1VC.

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Сделайте это

let vc1 = // alloc vc 1
let vc2 = // alloc vc 2
let vc3 = // alloc vc 3
let nav_Controllr = // alloc UINavigationController

// Now add your previous vc in NavigationController first
nav_Controllr.viewControllers.append(vc1)
nav_Controllr.viewControllers.append(vc2)

// Now push to the vc where you wanted navigate
nav_Controllr.pushViewController(vc3, animated: true)

Теперь ваш навигационный стек выглядит следующим образом

vc1 -> vc2 -> vc3

, когда вы запускаете свой контроллер, он всегда будет в этом потоке.

vc3 => vc2 => vc1
0 голосов
/ 03 октября 2018

Чтобы иметь кнопку «Назад», вам нужно сделать корневой vc панели вкладок навигационным контроллером

Точка входа -> TabBar -> Tab1 -> NavigationController -> VC1 -> VC2

, затем используйте это из vc1

self.navigationController?.pushViewController(vc2, animated: true)

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

if let tab = self.window?.rootViewController as? UITabBarController {
 let vc1 = //////
 let vc2 = //////
 let nav = tab.viewControllers![0] as! UINavigationController
 nav.viewControllers = [vc1,vc2]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...