I like to use the function below to get a link to any UIViewControllerin the navigation stack. If there is no such link, it simply returns nil.
extension UINavigationController {
func getReferenceTo<ViewController: UIViewController>(viewController: ViewController.Type) -> ViewController? {
return self.viewControllers.first { $0 is ViewController } as? ViewController
}
}
Use Case:
func tappedBackToHomeButton() {
guard let homeVC = self.navigationController?.getReferenceTo(viewController: HomeVC.self) else { return }
self.navigationController?.popToViewController(homeVC, animated: true)
}
source
share