1

テキスト ファイルの内容に基づいてラベルとテキスト フィールドをプログラムで作成するアプリがあります。ビュー コントローラーが読み込まれるたびに、毎回異なるテキスト フィールドとラベルが作成されます。私の問題は、View Controllerを追跡する必要があるため、View Controllerを解放せずにラベルとテキストフィールドをクリアする必要があることです。を試しself.viewController = nilましたが、メモリリークが発生することは間違いありません。ビューのすべてのサブビューを削除する方法はありますか?

4

2 に答える 2

3

グレッグが言いたかったことはこれです:

for (UIView *subview in self.view.subviews) {
    [subview removeFromSuperview];
}

ただし、これは期待どおりに機能しない可能性があります。これは、for ループで配列を反復処理しているときに配列を変更するときに、Objective C がそれを好まないためです。より安全な選択は次のとおりです。

while ([self.view.subviews count] > 0) { 
    [[self.view.subviews lastObject] removeFromSuperview]; 
}
于 2010-09-03T04:51:29.637 に答える
0

という名前のビューがある場合view、次のコードを使用してビューからすべてのサブビューを削除できるはずです。

for (UIView *subview in view) {
    [subview removeFromSuperview];
}
于 2010-09-02T20:09:23.450 に答える