この問題は、通常、以下のような状況で発生します。例えば、次のような遷移があるとします。
ViewController A -> ViewController B -> ViewController C
この状態で、ViewController CからViewController Aに戻りたい場合、通常は以下のコードを使用します。
navigationController?.popToViewController(viewControllerA, animated: true)
しかし、このコードを実行すると、ViewController Bも一緒にポップされてしまう場合があります。これは、ViewController Bがスタック上にあるためです。
- popToViewController(_:animated:)メソッドの代わりにpopToRootViewController(animated:)メソッドを使用する方法です。これにより、スタック上のすべてのビューコントローラが一度にポップされます。
navigationController?.popToRootViewController(animated: true)
- popToViewController(_:animated:)メソッドを使用する際に、ViewController Bを指定する代わりに、ViewController Aの前のビューコントローラを指定する方法です。
navigationController?.popToViewController(viewControllerA.previousViewController, animated: true)
この場合、ViewController Aの前のビューコントローラを取得するために、適切なプロパティやメソッドを使用する必要があります。