Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 删除UIButton的子视图_Iphone_Objective C_Ios_Uibutton - Fatal编程技术网

Iphone 删除UIButton的子视图

Iphone 删除UIButton的子视图,iphone,objective-c,ios,uibutton,Iphone,Objective C,Ios,Uibutton,当用户按下按钮时,我一遍又一遍地运行同一段代码。如果用户按下按钮,按钮上方会出现一个图像,如果再次按下按钮,图像将从按钮子视图中删除 这是我的密码: UIImageView *overlay = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"OverlayImage.png"]]; NSString *senderstag = [NSString stringWithFormat:@"%i", buttonFromSe

当用户按下按钮时,我一遍又一遍地运行同一段代码。如果用户按下按钮,按钮上方会出现一个图像,如果再次按下按钮,图像将从按钮子视图中删除

这是我的密码:

 UIImageView *overlay = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"OverlayImage.png"]];

    NSString *senderstag = [NSString stringWithFormat:@"%i", buttonFromSender.tag];
    if([[dictonaryOfImagesToDelete allKeys] containsObject:senderstag]){
        [[buttonFromSender subviews]makeObjectsPerformSelector:@selector(removeFromSuperview)]; 
    }
    else{
    [buttonFromSender addSubview:overlay];
    }
    NSString *imageName = [[NSString alloc]init];
    imageName = [arrayWithImageNames objectAtIndex:buttonFromSender.tag];

    [imagesToDelete addObject:imageName];

    [dictonaryOfImagesToDelete setObject:imagesToDelete forKey:[NSString stringWithFormat:@"%i", buttonFromSender.tag]];
我用字典来记录哪些按钮被按下了。与其移除按钮上的imageview,不如移除整个按钮。如何仅删除imageview而不删除按钮


谢谢:D

如果您想为按钮状态显示不同的图像,您可以直接初始化按钮以加载处于该状态的图片。 例如,启用/禁用或选择/取消选择(正常)

参考资料:

背景图像: :

按钮图像:

我最终制作了覆盖图的UIImageview,一个UIButton。这允许为其设置操作。以下是使用的代码:

        UIImage *image = [UIImage imageNamed:@"OverlayImage.png"];
    UIButton *overlay = [[UIButton alloc]init];
    overlay.frame = CGRectMake(0, 0, 100, 150);
    [overlay setImage:image forState:UIControlStateNormal];
    [overlay addTarget:self action:@selector(removeSelectedImage:) forControlEvents:UIControlEventTouchUpInside];
    overlay.tag = buttonFromSender.tag;


    [buttonFromSender addSubview:overlay];

    NSString *imageName = [[NSString alloc]init];
    imageName = [arrayWithImageNames objectAtIndex:buttonFromSender.tag];

    [imagesToDelete addObject:imageName];

    [dictonaryOfImagesToDelete setObject:imageName forKey:[NSString stringWithFormat:@"%i", buttonFromSender.tag]];
这将设置新的UIButton

然后,为了摆脱UIButton,我做了以下操作:

-(IBAction)removeSelectedImage:(id)sender{
UIButton *button = (UIButton *)sender;
[button removeFromSuperview];
NSString *tag = [NSString stringWithFormat:@"%i", button.tag];
NSString *deleteWhat = [[NSString alloc]init];
deleteWhat = [dictonaryOfImagesToDelete objectForKey:tag];
[imagesToDelete removeObject:deleteWhat];
[dictonaryOfImagesToDelete removeObjectForKey:tag];
}

图像只是一个覆盖。你仍然可以看到它背后的大部分原始图像。它们是用户图像,所以我无法对它们进行photoshop
-(IBAction)removeSelectedImage:(id)sender{
UIButton *button = (UIButton *)sender;
[button removeFromSuperview];
NSString *tag = [NSString stringWithFormat:@"%i", button.tag];
NSString *deleteWhat = [[NSString alloc]init];
deleteWhat = [dictonaryOfImagesToDelete objectForKey:tag];
[imagesToDelete removeObject:deleteWhat];
[dictonaryOfImagesToDelete removeObjectForKey:tag];
}