1

すべてのボタンのビューをクリアする方法はありますか? 私のコードは毎秒ボタンを生成し、それらをすべて画面から消去したいボタンを作成しました。私が試したとき[brick.removeFromSuperview](ブリックはボタンの名前です)、最後に作成されたボタンのみが削除されました。

4

3 に答える 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 に答える