リファクタリングが必要なコードを使用しています。ビューコントローラは、他の2つのビューコントローラのコンテナとして機能しており、以下のコードに示すように、それらの間でスワップします。
これは最良の設計ではないかもしれません。この方法でViewControllerを交換する必要はない場合があります。という事は承知しています。ただし、このコードを使用するときは、addChildViewController呼び出しで何が起こるかをさらに理解したいと思います。私はAppleのドキュメントや関連する質問で答えを見つけることができませんでした(おそらくデザインを変更する必要があることを示しています)。
具体的には、コンテナビューコントローラは、すでに追加されている子ビューコントローラを追加するように求められる状況をどのように処理しますか?そのViewControllerオブジェクトがすでに追加されていることを認識していますか?
たとえば、以下のコードがメソッド内にあり、そのメソッドが2回呼び出された場合...
[self addChildViewController:viewControllerB];
[self.view addSubview:viewControllerB.view];
[viewControllerB didMoveToParentViewController:self];
[viewControllerA willMoveToParentViewController:nil];
[viewControllerA.view removeFromSuperview];
[viewControllerA removeFromParentViewController];
ありがとう、ギャビン