удалить UIImageView из своего Superview - PullRequest
1 голос
/ 06 февраля 2011

В моем приложении, когда пользователь касается экрана, я помещаю UIImageView на экран так:

- (void) drawPoint:(CGPoint) toLocation {
    UIImageView *image = [[UIImageView alloc] initWithFrame:CGRectMake(toLocation.x, toLocation.y, SIZE_X, SIZE_Y)];
    image.tag = 1;
    [image setImage:[UIImage imageNamed:@"point.png"]];
    [self.myView addSubview:image];
    [image release];
}

Здесь MyView является UIView.

Когда пользователь закончит касаться, я хочу удалить свой UIImageView. Я пробовал это:

- (void) removeFromPoint:(CGPoint) location{
    UIImageView *image;
    [[image viewWithTag:1] removeFromSuperview];
}

или

- (void) removeFromPoint:(CGPoint) location{
    UIImageView *image = (UIImageView *)[self.MyView viewWithTag:1];
    [image removeFromSuperview];
}

но оба они заканчиваются в EXC_BAD_ACCESS. Вы знаете, как мне это сделать?

Спасибо.

Ответы [ 2 ]

1 голос
/ 06 февраля 2011

Если вы хотите удалить изображение под прикосновением, попробуйте это:

UIView * imageView = [self.myView hitTest:location withEvent:nil];
if ([imageView isKindOfClass:[UIImageView class]] && imageView.tag == 1) {
   [imageView removeFromSuperview];
}

(обратите внимание, я набрал его здесь, я не тестировал этот код)

Если вы хотите отладить свой код, включите NSZombies и проверьте, почему вы получаете bad_access. (отметьте это, чтобы узнать больше о NSZombieEnabled http://www.cocoadev.com/index.pl?NSZombieEnabled)

Если вы собираетесь добавить только один вид. Затем я бы сохранил его в сохраненном свойстве и добавил / удалил бы его при таких событиях:

@property (nonatomic,retain) UIImageView* marker;

@interface
@syntesize marker;

-(void) onTouchDown {
    [self.view addSubview:marker];
}

-(void) onTouchUp {
    [marker removeFromSuperview];
}
1 голос
/ 06 февраля 2011

Первый пример удаления вида изображения неверен.Во втором равен POINT_TAG?Попробуйте использовать тег больше 9. Попробуйте отладить то, что возвращает UIImageView *image = (UIImageView *)[self.MyView viewWithTag:POINT_TAG];.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...