概要
NavigationControllerから遷移した時の遷移元ViewControllerを取得する。
戻る遷移時に遷移元に値を渡したい時なんかに使える。
NavigationControllerからModal遷移時の戻る
//self.presentingViewControllerはNavigationControllerが格納 let nvc = self.presentingViewController as! UINavigationController //遷移元のViewControllerを取り出す let vc = nvc.viewControllers[0] as! ViewController vc.property = "value"
NavigationControllerからPush遷移時の戻る
//self.navigationControllerからViewControllerを取り出す let vc = self.navigationController?.viewControllers[0] as! ViewController vc.property = "value"
補足
尚、UINavigationController.viewControllers
には現在のViewControllerを含めた遷移階層がスタックされているので、遷移元のViewControllerを知りたい場合には、viewControllersの最後または最後から2番目の要素となる。
//NavigationControlleからModalで遷移したケース。 nvc.viewControllers.last //NavigationControlleからpushで遷移したケース。現在のviewControllerもスタックに積まれている var index = nvc.viewControllers.count - 2 nvc.viewControllers[index]
リンク
リンク