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" }