KickStarter iOSアプリのStoryboardのenumでの管理のしかたに感動した

  • 79
    Like
  • 1
    Comment

ふつうの

let storyboard = UIStoryboard(name: "HogeViewController", bundle: nil)
let viewController = storyboard.instantiateInitialViewController() as! HogeViewController

KickStarter-iOSのやりかた

let viewController = Storyboard.Hoge.instantiate(HogeViewController.self)
  • 見やすい
  • 文字列で引っ張る必要がないからtypoしない(補完も出る、コンパイルエラーになる)

実装

ios-oss/Storyboard.swift at master・kickstarter/ios-oss

public enum Storyboard: String {
  case Hoge
  case Fuga
  case ...

  public func instantiate<VC: UIViewController>(_ viewController: VC.Type,
                          inBundle bundle: Bundle = .framework) -> VC {
    // インスタンス化したViewControllerを返してる。
  }
}

enumにメソッド追加できるの凄い・・・