How to pop view controller to one of the previous view controllers in swift?

If you want to pop to a specific view control and dont know the count to go back you can use this:

 let viewControllers: [UIViewController] = self.navigationController!.viewControllers as! [UIViewController];

        for aViewController in viewControllers {
            if(aViewController is ViewControllerYouWantToGoTo){
                 self.navigationController!.popToViewController(aViewController, animated: true);
            }
        }

Instead of doing a generic popViewControllerAnimated: call, use popToViewController:animated:. You could detect if the user has deleted all of the rows in which case, do something like this (otherwise just pop one view controller):

let viewControllers: [UIViewController] = self.navigationController!.viewControllers as [UIViewController];
self.navigationController!.popToViewController(viewControllers[viewControllers.count - 2], animated: true);

After lots of effort I have created swift extension of back to a particular view controller in Swift 3.0.

extension UINavigationController {

    func backToViewController(viewController: Swift.AnyClass) {

            for element in viewControllers as Array {
                if element.isKind(of: viewController) {
                    self.popToViewController(element, animated: true)
                break
            }
        }
    }
}

Method calling:

   self.navigationController?.backToViewController(viewController: BarCodeScannerVC.self)

Tags:

Ios

Iphone

Swift