1画面戻るとき
viewContollerAからviewControllerBに画面遷移をしたときにviewControllerBでviewControllerAをインスタンスを取得したいとする。
let count = (self.navigationController?.viewControllers.count)! - 2
let vcA = self.navigationController?.viewControllers[count]
で取得ができる。
肝は-2
とすること。
前のviewControllerによって処理を分けることも可能
let count = (self.navigationController?.viewControllers.count)! - 2
if count < 0 {
// 戻るviewControllerがないとき(navigationController上で一番最初の画面のとき)
}
if let previousViewController = self.navigationController?.viewControllers[count] as? viewControllerA {
// viewControlllerAの処理
} else {
// それ以外のviewControllerの処理
}
複数戻るとき
例えば
vcA -> vcB -> vcC
でvcCで2画面前のvcAを取得したいとき
let count = (self.navigationController?.viewControllers.count)! - 3
let vcA = self.navigationController?.viewControllers[count]
といった具合でインスタンス化して取得することができる。
つまり、n画面前のviewControllerを取得したいときはn+1
引けばよいということ