0
現在、Swift 3で動作しているスタックの次のレイヤーでコントローラーへの参照があるように、ビューコントローラーがナビゲーションスタックからポップされたことを検出しようとしています。ありがとうビューコントローラがナビゲーションスタックからポップされているかどうかを調べる方法はありますか?
現在、Swift 3で動作しているスタックの次のレイヤーでコントローラーへの参照があるように、ビューコントローラーがナビゲーションスタックからポップされたことを検出しようとしています。ありがとうビューコントローラがナビゲーションスタックからポップされているかどうかを調べる方法はありますか?
UINavigationController
には、現在スタック上にあるビューコントローラの配列を含むviewControllers
というプロパティがあります。あなたは、ビューコントローラの配列を取得し、その配列から最後からビューコントローラを取得できます。
guard let navController = self.navigationController else {
print("We are not part of a navigation stack!")
return
}
let stack = navController.viewControllers
let stackCount = stackCount
if stackCount > 1 {
let nextVC = viewControllers[stackCount - 2]
//nextVC now contains the view controller one down from the current VC
} else {
//We are the root view controller
}
ああ、それワーキング、感謝です。これは、willmovetoparentを呼び出して、viewcontrollers配列にアクセスすることによっても行うことができると考えました。 –
ナビゲーションコントローラとその子供の親子関係が文書化されているとは思えないので、私はそれを信じていません。実装の詳細は、将来のOSリリースで変更される可能性があり、コードを壊す可能性があります。 –
私はあなたのソリューションを実装し、それを自分のコードスニペットに追加しました。ありがとう! –