# Large number of view controllers and SceneCoordinator

**URL:** <https://forums.kodeco.com/t/large-number-of-view-controllers-and-scenecoordinator/32742>\
**Category:** RxSwift\
**Created:** [July 30, 2017, 7:14am UTC](https://forums.kodeco.com/t/large-number-of-view-controllers-and-scenecoordinator/32742 "2017-07-30T07:14:55Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![dropski](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/dropski/32/102075_2.png) [@dropski](https://forums.kodeco.com/u/dropski)\
**Post date:** [July 30, 2017, 7:14am UTC](https://forums.kodeco.com/t/large-number-of-view-controllers-and-scenecoordinator/32742/1 "2017-07-30T07:14:55Z")

</div>

Do you know any good solution for SceneCoordinator with large number of view controllers? @fpillet

---

<div class="post-metadata">

**Author:** ![fpillet](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/fpillet/32/97677_2.png) [@fpillet](https://forums.kodeco.com/u/fpillet)\
**Post date:** [August 8, 2017, 8:50am UTC](https://forums.kodeco.com/t/large-number-of-view-controllers-and-scenecoordinator/32742/2 "2017-08-08T08:50:20Z")

</div>

The best solution IMHO is to divide your application in areas, use an enum for each, then a master enum that points to the appropriate area:

```auto
enum Scene {
  case main(MainScene)
  case settings(SettingsScene)
}

enum MainScene {
  case home
  case items
  case search

  fileprivate func viewController() -> UIViewController {
    switch self {
      // return the appropriate VC here
    }
  }
}

enum SettingsScene {
  case userSettings
  case regionSettings
  case appSettings

  fileprivate func viewController() -> UIViewController {
    switch self {
      // return the appropriate VC here
    }
  }
}

extension Scene {
  func viewControler() -> UIViewController {
   switch self {
     case .main(let mainScene):
       return mainScene.viewController()
     case .settings(let settingsScene):
       return settingsScene.viewController()
   }
  }
}
```

---

<div class="post-metadata">

**Author:** ![dropski](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/dropski/32/102075_2.png) [@dropski](https://forums.kodeco.com/u/dropski)\
**Post date:** [August 8, 2017, 10:10am UTC](https://forums.kodeco.com/t/large-number-of-view-controllers-and-scenecoordinator/32742/3 "2017-08-08T10:10:14Z")

</div>

You’re the boss! thank you 🙂
