2017-03-03 7 views
0

superviewでmyViewという名前のビューを作成した後、myView = nilをコードしますが、superviewからは削除しません。myviewのようなビューもsuperviewに表示されます私を助けて、理由を教えてください。myview = nilでもsuperviewのビューはまだあります

+1

あなたはmyView.removeFromSuperview()を呼び出す必要があります。 –

+0

ありがとうございます。しかし、私はどのように削除するのか分かります。なぜ私はmyView = nilを作成したのですか、まだスーパービューのビューがあります –

答えて

2

あなたの質問はあります。

これは非常に簡単です。viewA addSubview:viewBを入力すると、viewAからviewBへの参照が作成されます。

viewB = nilを実行すると、viewAからviewBへのポインタが残っているため、ARCはビューを解放しません。

だからこそ、ポインタを削除するには[viewB removeFromSuperview]に電話する必要があります。

+0

ありがとう、それは私を助ける –

+0

あなたは歓迎です:)あなたは解決されたように質問に印を付けることができますか? :) – CZ54

+0

申し訳ありませんが、あなたは解決されたように質問をする方法を教えてくれますか?私は初心者 –

0

削除し、そのタグを参照して、ビューを削除しようとしているビューに[myView removeFromSuperView];

+0

ありがとうございます。削除方法を知っていると私を混乱させる理由は、なぜ私はmyview = nilを作成したのですか、まだsuperviewのビューがあります –

+0

サブビューnilを作成するとスーパービューがレイアウトされない場合があります –

+0

いつか、サブビューnilを作成し、スーパービューのレイアウトを強制的に行う方法 –

0

使用タグを使用してnilをそれを作る前に、スーパービューからビューを削除してください。 が好き:myView = nilはスーパーからビューを削除しません(そのため、なぜそれを解放していない)理由を

tempView.tag == 1; 
for(UIView *temp in [self.view subviews]) { 
if (temp.tag == 1) { 
    [temp removeFromSuperview]; 
} 
} 
関連する問題