2012-01-13 16 views
1

self.viewにいくつかのボタンを追加しました。ユーザーがボタンをクリックすると、別のビュー(サブビュー)がロードされます。私はサブビューをロードしています私のコードは(iは既に検出部を行っている)ユーザがこのビューにタッチすると、私はそれを検出してビューを削除スーパービューからのビューの削除

subView = [[UIView alloc] initWithFrame:CGRectMake(0,0,self.scrollView.contentSize.width, self.scrollView.contentSize.height)]; 
subView.tag=1; 
// and then i add various other components to it 

[self.view addSubview:subView]; // and finally add it to the view 

下に示されています。

これは私がビュー

UIView *v = [self.subView viewWithTag:1]; 
    v.hidden = YES; 
    [v endEditing:YES]; 
[v removeFromSuperview]; 

ビュー。消えるを除いています方法ですが、私はボタンまたはself.viewにあったものをクリックすることはできません。私はしばらくの間、私はそれ以外の場合はクリックすることができますボタンの上にマウスカーソルを保持することはできません。どうすればこの問題を解決できますか?

答えて

1

私はあなたの問題はあなたが

[self.subView viewWithTag:1]; 

を行うということですが、削除したいビューがそれてself.viewによって「所有」されると思います

[self.view viewWithTag:1]; 

ただし、サブビューへの参照がある場合は、もう一度検索してください。なぜすぐにではない:

self.subView.hidden = YES; 
[self.subView endEditing:YES]; 
[self.subView removeFromSuperview]; 

ところで、あなたのメモリ管理に見たいと思うかもしれません、私はあなたのサブビューをALLOC表示されますが、ビューが再び除去されたとき、私は、それがリリースされて表示されません。たぶんあなたはそうしていて、コードを表示しないだけで、その場合はコメントを忘れてしまいます。

+0

私はARCを使用しています。削除する必要はありません – Illep

2

この行する必要があります

UIView *v = [self.subView viewWithTag:1]; 

は本当に可能:

UIView *v = [self.view viewWithTag:1]; 

3

このようサブビューを削除してください:

for (UIView *subView in self.view.subviews) { 
    if (subView.tag == (int)yourSubViewTag) { 

     [subView removeFromSuperview]; 
    } 
} 
+0

「yourSubViewTag」とは何ですか?何がそこに来るはずですか? – Illep

+0

"1"、 "2"、または "152"と比較したいタグ 'int yourSubViewTag = 1; subView.tag = yourSubViewTag; ' – Frade

+0

しかし、Vicentによると、参照(プロパティ)があればすぐにそれを行うことができます:' [subView removeFromSuperview]; 'はそれを検索する必要はありません。 – Frade

関連する問題