Ios 如何删除重复按钮
我用for循环创建了五个按钮,效果很好。每当我单击“重新启动”按钮时,都会创建重复的按钮Ios 如何删除重复按钮,ios,objective-c,Ios,Objective C,我用for循环创建了五个按钮,效果很好。每当我单击“重新启动”按钮时,都会创建重复的按钮 -(void)buttonCreate { for( int i = 0; i < 5; i++ ) { oneBtn1 = [UIButton buttonWithType:UIButtonTypeCustom]; oneBtn1.frame = CGRectMake(316,i*-5+474,51,50); [oneBtn1 setTag:i]; [oneB
-(void)buttonCreate {
for( int i = 0; i < 5; i++ )
{
oneBtn1 = [UIButton buttonWithType:UIButtonTypeCustom];
oneBtn1.frame = CGRectMake(316,i*-5+474,51,50);
[oneBtn1 setTag:i];
[oneBtn1 addTarget:self action:@selector(oneButton:) forControlEvents:UIControlEventTouchUpInside];
[oneBtn1 setImage:[UIImage imageNamed:@"1c.png"] forState:UIControlStateNormal];
[self.view addSubview:oneBtn1];
}
}
我试过这个,但它只会删除5个按钮中的一个
if(oneBtn1 != NULL) {
[oneBtn1 removeFromSuperview];
oneBtn1 = nil;
}
问题是:如何删除重复按钮?创建一个数组(NSMutableArray*buttonHolderArray
)以容纳所有五个按钮的插座
[buttonHolderArray addObject:oneBtn1];
然后,您可以根据需要删除/更新按钮
一旦你不需要任何按钮,清空数组本身。除此之外,如果要清除视图,只需调用所有按钮的removeFromSuperView
I tried this one but it will remove only one button out of 5.
if(oneBtn1 != NULL) {
[oneBtn1 removeFromSuperview];
oneBtn1 = nil;
}
您只删除一个按钮,如果要删除所有按钮,请使用
for ( UIButton *button in buttonHolderArray){
button removeFromSuperView];
}
再次调用重新启动方法之前请使用此选项
for (UIButton *btn in self.view.subviews ) {
[btn removeFromSuperview];
}
单击“重新启动”按钮之前,您可以从调用方法的视图中删除所有按钮
removeChildViewsWithKindOfClass
-(void)restart {
[self.view removeChildViewsWithKindOfClass:[UIButton class]];
[self buttonCreate];
}
-(void)removeChildViewsWithKindOfClass:(Class)classToRemove{
if (classToRemove==nil) return;
for (UIView *v in [self subviews]) {
if ([v isKindOfClass:classToRemove]) {
[v removeFromSuperview];
}
}
}
如果要删除特定按钮,可以使用创建按钮时必须事先设置的属性
标记
,它允许您删除带有特定标记的按钮。您可以通过检查按钮是否已创建来删除
-(void)buttonCreate {
int tag_start = 500;
for( int i = 0; i < 5; i++ )
{
UIView * prevbtn = [self.view viewWithTag:tag_start + i];
if(prevbtn) {
[prevbtn removeFromSuperview];
}
oneBtn1 = [UIButton buttonWithType:UIButtonTypeCustom];
oneBtn1.frame = CGRectMake(316,i*-5+474,51,50);
[oneBtn1 setTag:tag_start + i];
[oneBtn1 addTarget:self action:@selector(oneButton:) forControlEvents:UIControlEventTouchUpInside];
[oneBtn1 setImage:[UIImage imageNamed:@"1c.png"] forState:UIControlStateNormal];
[self.view addSubview:oneBtn1];
}
}
-(无效)按钮创建{
int tag_start=500;
对于(int i=0;i<5;i++)
{
UIView*prevbtn=[self.view view withtag:tag_start+i];
如果(prevbtn){
[prevbtn removeFromSuperview];
}
oneBtn1=[UIButton按钮类型:UIButtonTypeCustom];
oneBtn1.frame=CGRectMake(316,i*-5+474,51,50);
[oneBtn1 setTag:tag_start+i];
[oneBtn1 addTarget:self action:@selector(oneButton:)for ControlEvents:UIControlEventTouchUpInside];
[oneBtn1 setImage:[UIImage ImageName:@“1c.png”]用于状态:UIControlStateNormal];
[self.view addSubview:oneBtn1];
}
}
您想做什么?如何在buttonCreate()函数中使用我在上面为循环指定的array创建五个按钮足够创建五个按钮。如何将按钮从数组显示到viewcontroller。因为我用一个名称显示整个按钮。如何添加按钮而不是UIVIEW?什么意思?您可以使用代码添加按钮。我发布的方法是将它们从superview中删除。但是标记开始是什么意思?如果我删除了那个按钮,我的uiview显示黑色屏幕标签只是为最后一个按钮添加一些独特的标签。如果未添加,则第一个按钮的标记为0。这是默认值。如果要执行任何与标记相关的操作,则需要为视图指定唯一的标记。我尝试使用相同的过程创建另一个五按钮(fiveBtn1)。它也可以工作,但删除了一个BTN1。
-(void)buttonCreate {
int tag_start = 500;
for( int i = 0; i < 5; i++ )
{
UIView * prevbtn = [self.view viewWithTag:tag_start + i];
if(prevbtn) {
[prevbtn removeFromSuperview];
}
oneBtn1 = [UIButton buttonWithType:UIButtonTypeCustom];
oneBtn1.frame = CGRectMake(316,i*-5+474,51,50);
[oneBtn1 setTag:tag_start + i];
[oneBtn1 addTarget:self action:@selector(oneButton:) forControlEvents:UIControlEventTouchUpInside];
[oneBtn1 setImage:[UIImage imageNamed:@"1c.png"] forState:UIControlStateNormal];
[self.view addSubview:oneBtn1];
}
}