Storyboardの異なる画面遷移は、以下の3行書かなければなりません。。画面遷移のたびに以下のコードを記述するのは、めんどくさいので、、Extensionで書きます。
let storyboard = UIStoryboard(name: "Main", bundle: nil) let mainVC = storyboard.instantiateViewController(withIdentifier: "Main") as! MainViewController self.navigationController?.pushViewController(mainVC, animated: true)
Extensionを使って楽に画面遷移する方法
準備
STEP.1
UIViewController-Extension.swiftというファイルを作り、以下のコードを記述します。
import Foundation
import UIKit
extension UIViewController {
func pushViewControllerOverNavigation<T: UIViewController>(_ storyboard: String, _ additionalOperation: ((T) -> ())? = nil) {
let storyboard = UIStoryboard(name: storyboard, bundle: nil)
let nextVC = storyboard.instantiateInitialViewController()
if let nextVC = nextVC as? T {
additionalOperation?(nextVC)
}
navigationController?.pushViewController(nextVC!, animated: true)
}
}
STEP.2

遷移先のViewControllerのIs Initial View Controllerのチェックを忘れずにつけてください。
STEP.3
以下の命名規則に従ってください。
Storyboard:Main.storyboard
Identifier:Main
Class:MainViewController.swift
これで準備完了です。
使い方
画面遷移したいところで、以下の1行を記述すると画面遷移できます。
self.pushViewControllerOverNavigation("Next")
遷移先に値を渡したい時は以下のように書きます。
self.pushViewControllerOverNavigation("Next") { (vc: NextViewController) in
vc.hogehoge = "hpgehoge"
}

