удалить uiview с помощью uibutton программно - PullRequest
2 голосов
/ 03 января 2012

Я застрял в том, как удалить пользовательский интерфейс, щелкнув по пользовательскому элементу uibutton, загрузку uibutton сразу после загрузки сцены. 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];
}

Ответы [ 2 ]

1 голос
/ 03 января 2012

Изменить цель с holderView на self:

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

и измените код, который удаляет представление, на следующее:

[holderView removeFromSuperview];
0 голосов
/ 09 июля 2013

Используйте следующую технику. Укажите тег каждого элемента управления, который у вас есть в вашем View. Затем вы можете получить выгоду от этого свойства тега

предположим, что я указал тег как 100. Тогда

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

теперь, чтобы удалить его (кнопки) используйте это

[buttonToRemove removeFromSuperview];
...