Irohabook
0
2098

SwiftのUINavigationControllerとpushViewControllerの使い方(ストーリーボードなし)

UINavigationControllerは「複数のviewからなる箱」と考えるとわかりやすい。次の例はUINavigationControllerの本質をよく表している。

// AppDelegate.swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    let vc = FirstViewController()
    let nc = UINavigationController(rootViewController: vc)
    window?.rootViewController = nc
    return true
}

// FirstViewController.swift
override func viewDidLoad() {
    super.viewDidLoad()
    let s = SecondViewController()
    self.navigationController?.pushViewController(s, animated: true)
}

FirstViewControllerからSecondViewControllerに画面遷移したいとする。FirstViewControllerのボタンをタップしてSecondViewControllerに移る。

FirstViewControllerのviewDidLoadでSecondViewControllerのインスタンスをつくり、それをpushViewControllerで送る。しかしそのままでは、どこにプッシュすればいいかわからない。

そこでFirstViewControllerとSecondViewControllerをまとめあげるUINavigationControllerを用意する。このUINavigationControllerには、最初に表示するviewをrootViewControllerという引数で指定する。rootViewControllerで指定されたviewが、最初に表示されるviewである。

let nc = UINavigationController(rootViewController: vc)

つまりUINavigationControllerの中に各viewがあるような感じになる。FirstViewControllerでプッシュすると、プッシュ先は自動的にncという箱の中に入っていく。

次の記事

UINavigationController