Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.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
Ios uibutton仅显示在新添加的uiview中_Ios_Uiview_Uibutton - Fatal编程技术网

Ios uibutton仅显示在新添加的uiview中

Ios uibutton仅显示在新添加的uiview中,ios,uiview,uibutton,Ios,Uiview,Uibutton,我无法显示uibutton*removeSticker,请帮忙 - (void)viewWillAppear:(BOOL)animated { UIView *holderView = [[UIView alloc] initWithFrame:CGRectMake(0, 50, _imagePicker.selectedImage.size.width, _imagePicker.selectedImage.size.height)]; UIImageView *imageView = [[

我无法显示uibutton*removeSticker,请帮忙

- (void)viewWillAppear:(BOOL)animated {

UIView *holderView = [[UIView alloc] initWithFrame:CGRectMake(0, 50, _imagePicker.selectedImage.size.width, _imagePicker.selectedImage.size.height)];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:[holderView frame]];
[imageView setImage:_imagePicker.selectedImage];
[holderView addSubview:imageView];

removeSticker = [UIButton buttonWithType:UIButtonTypeCustom];
removeSticker.frame = CGRectMake(0, 0, 32, 32);
[removeSticker setImage:[UIImage imageNamed:@"cancel-disabled.png"] forState:UIControlStateNormal];
[removeSticker addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchDown];
[holderView addSubview: removeSticker];
[removeSticker setHidden: YES];

UIPinchGestureRecognizer *pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(scale:)];
[pinchRecognizer setDelegate:self];
[holderView addGestureRecognizer:pinchRecognizer];

UIRotationGestureRecognizer *rotationRecognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotate:)];
[rotationRecognizer setDelegate:self];
[holderView addGestureRecognizer:rotationRecognizer];

UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(move:)];
[panRecognizer setMinimumNumberOfTouches:1];
[panRecognizer setMaximumNumberOfTouches:1];
[panRecognizer setDelegate:self];
[holderView addGestureRecognizer:panRecognizer];

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapped:)];
[tapRecognizer setNumberOfTapsRequired:1];
[tapRecognizer setDelegate:self];
[holderView addGestureRecognizer:tapRecognizer];

UILongPressGestureRecognizer *longPressRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress:)];
[longPressRecognizer setDelegate:self];
[holderView addGestureRecognizer:longPressRecognizer];

[stickerView addSubview:holderView];

}

- (void)buttonClicked:(id)sender{
UIView *holderView = [(UIButton *)sender superview]; [holderView removeFromSuperview];
}
uibutton*removeSticker仅出现在最新添加的uiview*holderView上,如果我想编辑以前添加的uibutton*removeSticker一次,则不会发生任何操作。请帮忙,非常感谢

-(void)longPress:(id)sender {
[removeSticker setHidden:NO];
}
请查看随附的屏幕截图:

对于上面的屏幕截图,瓶子和西瓜是
*holderView
。 我先添加了瓶子,然后添加了西瓜,但是当我点击瓶子时,
[removeSticker setHidden:NO]出现在西瓜而不是瓶子里

[Removestcker setHidden:否]仅显示在最新添加的
*holderView

上,来自:

“一个视图同时只能有一个superview。”

因此,如果将一个视图作为子视图添加到另一个视图中,该子视图将从其以前的superview中删除并添加到新的superview中。(请参阅addSubview方法的文档)

(考虑一下为什么UIView有一个UIView*superview类型的@属性,而不是名为superviews的NSArray[复数])


编辑:如果确实希望在多个超级视图中包含多个视图,则必须创建UIView的多个实例,并将多个实例添加到各个超级视图中。您还需要处理相应的UIView实例,因此您可以将它们添加到NSArray,并使用NSDictionary管理该阵列。

您所说的“仅出现在最新添加的UIView*holderView”是什么意思?你能解释更多吗?@Canopus我已经更新了我的问题,非常感谢。