description ) else { return } closure () } } extension Router : UINavigationControllerDelegate { func navigationController ( _ navigationController : UINavigationController , didShow viewController : UIViewController , animated : Bool ) { guard let previousController = navigationController . class AppCoordinator : BaseCoordinator { // ... override func start () { let navigationController = UINavigationController () let router = Router ( navigationController : navigationController ) let myCoordinator = MyCoordinator ( router : router ) // ... } } class MyCoordinator : BaseCoordinator { let router : RouterProtocol init ( router : RouterProtocol ) { self . class AppCoordinator : BaseCoordinator { // ...