ふつうの
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にメソッド追加できるの凄い・・・