2011-01-04 8 views
1

すべてのボタンの表示を消去する方法はありますか?私のコードでは毎秒ボタンが生成され、画面からすべて消去したいボタンを作った。 [brick.removeFromSuperview](レンガがボタンの名前である)を試したとき、作成された最後のボタンだけが削除されました。ビューからボタンを削除する

+0

私は興味があります...あなたのアプリケーションは毎秒ボタンを作成していますか?これはゲームのようなものですか? – donkim

答えて

3

NSMutableArrayにすべてのボタンへの参照を記録することができます。

e.x。

NSMutableArray *buttons = [[NSMutableArray alloc] init]; 

// Button creation 
UIButton *button = [[UIButton alloc] init...]; 
[yourView addSubview:button]; 
[buttons addObject:button]; 
[button release]; 

// Button removal 
[buttons makeObjectsPerformSelector:@selector(removeFromSuperview)]; 
[buttons removeAllObjects]; // Alternatively, you could omit this line 
          // and recycle the buttons at a later time 

(単にビューのサブビューを列挙し、ボタンを探してではなく)この方法の利点は、あなたがすべきではない、あなたのビューからUIButtonsを削除する心配する必要はないということです。たとえば、「すべてのボタンを削除」ボタンを削除したくない場合は、そのボタンをアレイに追加しないでください。

3
for (UIView *view in [self subviews]) { 
    if ([view isKindOfClass:[UIButton class]]) { 
     [view removeFromSuperview]; 
    } 
} 

注意深く、指定されたビューからすべてのボタンが削除されます。したがって、生成されたボタンを削除するだけの条件付きのものが必要なのかもしれません。他のボタンにtagを設定することで、生成されたボタンと区別することができます。ボタンにタグがない場合は削除します。

+0

なぜ賛成投票ですか? –

1
NSMutableArray * buttons = [[NSMutableArray alloc] init]; 

for(NSObject * btn in btn.superview.subviews) 
{ 
    if([btn isKindOfClass: [UIButton class]]) 
    [buttons addObject: btn]; 
} 

for(UIView * btn in buttons) 
    [btn removeFromSuperview]; 

[buttons release]; 

ボタンを削除すると列挙子が無効になり、予期しない結果が生じるため、一時配列が必要です。

関連する問題