Я использовал следующий код для перенаправления с дочернего на родительский (за исключением того, что мне приходилось загружать разные данные на родительский - подумайте об этом как о приложении чата с кнопкой, чтобы увидеть ваш профиль, и вы можете нажать на какой-нибудь другой Ваш друг, чтобы перенаправить в другой чат, т.е. другой набор данных). Сначала я использовал
let popOverVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(identifier: "parent") as! UIViewController
self.navigationController?.pushViewController(popOverVC, animated: true)
Но это позволило мне go вернуться к предыдущему чату, проведя пальцем влево (я попытался отключить его, скрыв кнопку назад, используя
navigationController?.interactivePopGestureRecognizer?.isEnabled = false
, и это не помогло. Также нельзя отключить функцию прокрутки назад (я использовал ее в ViewDidLoad, ViewWillAppear, ViewWillLayoutSubViews и все равно она не работала; я все еще мог провести пальцем назад к предыдущему чату). Поэтому я попытался использовать следующее, и пока оно работало, моя панель навигации исчезнет.
navigationController?.setNavigationBarHidden(false, animated: true)
сработал, когда я использовал pushViewController (но он все равно позволил бы провести пальцем назад), и он не сработал, когда я использовал root V C (но он отключил проведите назад)
Вот метод rootV C, о котором я говорю:
let window = UIApplication.shared.windows[0] as UIWindow
popOverVC.navigationController?.setNavigationBarHidden(false, animated: true)
window.rootViewController = popOverVC