すべてのボタンのビューをクリアする方法はありますか? 私のコードは毎秒ボタンを生成し、それらをすべて画面から消去したいボタンを作成しました。私が試したとき[brick.removeFromSuperview]
(ブリックはボタンの名前です)、最後に作成されたボタンのみが削除されました。
3574 次
3 に答える
3
内のすべてのボタンへの参照を追跡できますNSMutableArray
。
元
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
この方法の利点は (単にビューのサブビューを列挙してボタンを探すのではなく)、ビューから UIButton を削除する必要がないことを心配する必要がないことです。たとえば、「すべてのボタンを削除」ボタンを削除したくない場合は、配列に追加しないでください。
于 2011-01-04T01:07:41.923 に答える
3
for (UIView *view in [self subviews]) {
if ([view isKindOfClass:[UIButton class]]) {
[view removeFromSuperview];
}
}
ただし、注意してください。これにより、指定したビューから文字通りすべてのボタンが削除されます。したがって、生成されたボタンのみを削除するには、何らかの条件が必要になるでしょう。tag
ボタンにタグがない場合は、他のボタンにa を設定して、生成されたボタンと区別できます。
于 2011-01-04T00:56:56.273 に答える
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];
ボタンを削除すると列挙子が無効になり、予測できない結果が生じるため、一時配列が必要です。
于 2011-01-04T01:00:12.710 に答える