1. ホーム
  2. アイオス

[解決済み】すべてのサブビューを削除する方法は?

2022-03-27 17:35:59

質問

私のアプリがルートビューコントローラーに戻るとき、その中の viewDidAppear: メソッドを使用して、すべてのサブビューを削除する必要があります。

どうすればよいのでしょうか?

どのように解決するのですか?

編集する。 ありがとうございました。 ココファン : この状況をまざまざと見せつけられたのが NSViewUIView は異なる処理を行います。例えば NSView (デスクトップMacの開発のみ)は、単純に以下のようにすればよい。

[someNSView setSubviews:[NSArray array]];

について UIView (iOSの開発のみ)であれば、安全に makeObjectsPerformSelector: なぜなら subviews プロパティは コピー サブビューの配列の

[[someUIView subviews]
 makeObjectsPerformSelector:@selector(removeFromSuperview)];

ありがとうございました トミー という指摘を受け makeObjectsPerformSelector: を修正するように見える。 subviews 配列は、列挙されている間(これは NSView には適用されませんが UIView ).

ご覧ください このSOの質問 をご覧ください。

これらの2つのメソッドのいずれかを使用すると、メインビューが含むすべてのビューが削除されます。 を解放し 他の場所で保持されていない場合。Appleのドキュメントより removeFromSuperview :

受信機のスーパービューが nil でない場合、このメソッドは受信機を解放します。ビューを再利用する場合は、このメソッドを呼び出す前に必ず保持し、 それが終了したとき、または別のビュー階層に追加した後に、 適切に解放するようにしてください。