Segueを利用しない画面遷移

2020/02/01

Segue を利用せずに Storyboard の Storyboard ID を利用して present で画面遷移させる。 遷移先の UIViewController を明示的にクラス名を指定すると値を渡すことも可能

画面遷移

  • 遷移元:ViewController
  • 遷移先:PageViewController
  • Storyboard ID:page

let storyboard: UIStoryboard = self.storyboard!
let page = storyboard.instantiateViewController(identifier: "page") as! PageViewController
page.customValue = customValue
page.modalPresentationStyle = .fullScreen
page.modalTransitionStyle = .crossDissolve
self.present(page, animated: true, completion: nil)
  1. Storyboard から instantiateViewController() で PageViewController を生成
  2. 値を受け渡し
  3. 画面遷移先の画面スタイル、アニメーションを設定

.modalPresentationStyle、.modalTransitionStyle プロパティは、iOSバージョンによって異なる

.modalTransitionStyle


public enum UIModalTransitionStyle : Int {
    case coverVertical
    case flipHorizontal
    case crossDissolve
    @available(iOS 3.2, *)
    case partialCurl
}

.modalPresentationStyle


public enum UIModalPresentationStyle : Int {
    case fullScreen
    @available(iOS 3.2, *)
    case pageSheet
    @available(iOS 3.2, *)
    case formSheet
    @available(iOS 3.2, *)
    case currentContext
    @available(iOS 7.0, *)
    case custom
    @available(iOS 8.0, *)
    case overFullScreen
    @available(iOS 8.0, *)
    case overCurrentContext
    @available(iOS 8.0, *)
    case popover
    @available(iOS 7.0, *)
    case none
    @available(iOS 13.0, *)
    case automatic
}