まず、ビューコントローラは、ビュー階層全体を一度に管理することを目的としています。2つのビューコントローラ(UINavigationControllerなどのコンテナコントローラを除く)を同時にアクティブにしないでください。この重要な点をよりよく理解するには、このSOの質問と私の回答を参照してください。したがって、あなたが説明する特定の状況は出てはいけません。(余談ですが、ビューとビューコントローラを混同することがよくあるため、ビューコントローラに「blueView」のように「-view」で終わる名前を付けることは役に立ちません。混乱を避けるために「blueViewController」と呼んでください。)
次に、@ InsertWittyNameが指摘しているように、-viewDidLoad
これはUIViewControllerメソッドであり、UIViewメソッドではありません。さらに一歩進んで、ビューコントローラも-viewDidLoad
、ビューからサブビューを追加または削除する役割もありません。-viewDidLoad
ビューコントローラのビューが最初に作成されたときに呼び出されます。これは基本的に、ビュー階層が作成されるまでビューコントローラの初期化のビュー関連部分を延期する方法にすぎないため、サブビューが階層から削除されたという理由だけで再度呼び出される理由はありません。
最後に、ビューがスーパービューからそれ自体を削除する方法は、実際には実装の詳細です。スーパービューでプライベートUIViewメソッドを呼び出す場合や、スーパービューのサブビューのリストを直接変更する場合などがあります。サブビューが削除された後にスーパービューが自動的に再描画されることを明示的に示しているドキュメントには何も表示されませんが、私の経験では、スーパービューは実際に再描画されます。-drawRect
これは、スーパービューのメソッドにブレークポイントを設定することで確認できます。