2012-01-03 108 views
2

我被困在如何通过用户单击uibutton来移除uiview,立即加载场景的uibutton加载。乌布顿也没有得到回应。 我应该如何设置它?请帮助,非常感谢。以编程方式移除uiview by uibutton

- (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]; 

    UIButton *removeSticker = [UIButton buttonWithType:UIButtonTypeCustom]; 
    removeSticker.frame = CGRectMake(0, 0, 200, 100); 
    [removeSticker setImage:[UIImage imageNamed:@"cancel-disabled.png"] forState:UIControlStateNormal]; 
    [removeSticker addTarget:holderView action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside]; 
    [holderView addSubview: removeSticker]; 

    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]; 

    [parentPreviewView addSubview:holderView]; 
} 

- (void) buttonClicked: (id)sender 
{ 
    [self.view removeFromSuperview]; 
} 

回答

1

改变目标从holderViewself

[removeSticker addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside]; 

,并更改删除了该视图下面的代码:

[holderView removeFromSuperview]; 
+0

很好的回答,假设原来的问题是关于删除'holderView'。我会建议的一个建议是在'viewWillAppear:'方法上面移动'buttonClicked'方法*,特别是如果在.h接口文件中没有声明'buttonClicked'。 – 2012-01-03 18:42:46

+0

@MichaelDautermann只要我们使用选择器,我认为'buttonClicked'方法定义在'viewWillAppear'的上面或下面并不重要。 – Hejazi 2012-01-03 18:48:29

+0

感谢您的及时回复,但是当我将其更改为'[holderView removeFromSuperview];'时,它表示使用未声明的标识符? – zeropt7 2012-01-03 18:54:20

0

每使用以下technique.Specify标签控制你的视图。然后你可以从这个“标签”属性中获益

假设我指定的标记为100。然后

UIButtom *buttonToRemove=(UIButton*)[self.view viewWithTag:100]; 

立即删除(按钮)使用此

[buttonToRemove removeFromSuperview];