2012-02-10 7 views
0

を追加したUIViewを削除するには、UIImageViewを初期化して呼び出します。 後でこのビューを削除します。私のコードは以下の通りです。次のイベントが実行されると、

self.myView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 320, 460)]; 
[myView setBackgroundColor:[UIColor whiteColor]]; 
self.myView.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"someImage.png"]]; 

[self.tableView addSubview:self.myView]; 

後で、私はビューを削除し、削除するコードは次のとおりです。

[self.tableView bringSubviewToFront:self.myView]; 
[self.myView setHidden:YES]; 
[self.myView removeFromSuperview]; 

私が抱えている問題は、私がtableviewに追加したビューが削除されないということです。私はなぜこれが邪魔であるのか、それを解決するプログラム的な解決策を知る必要があります。

注:私はデバッグを行い、コードの削除部分が実行されますが、何も削除されません。あなたはこのような振る舞いは、バックグラウンドスレッドからのUIKitオブジェクト(のようなUIView複数可)を変更している原因となることができる唯一の[self.myView removeFromSuperview];

+0

hidden = YESを設定しないと問題は残りますか? – bryanmac

+0

はい、何も変わりません – sharon

+0

UIViewの複数のインスタンスをテーブルに追加しましたか?削除した後、テーブルビューのサブビューを印刷して、どの子ビューが残っているかを確認します。 – colbadhombre

答えて

0

を助けます。 UIKitは一般的にスレッドセーフではなく、バックグラウンドスレッドからの呼び出しは、アプリの可視状態を変更しないことがあります。

2番目のコードブロックを実行するメソッドとはどのように呼び出されますか?

FWIW、bringSubviewToFront:およびsetHidden:は不要です。 removeFromSuperviewは、ビューを削除するために必要なものでなければなりません。

+0

なぜですか?彼女は何を持っているのでしょうか? – colbadhombre

0

一般的な問題を試してみてください

0

ナビゲーションコントローラのようにテーブルビューの上に別のコントローラがあるのだろうかと思っていました。 removeFromSuperviewは実際にそれを参照して不要な結果を出すでしょうか?

関連する問題