Как заставить предыдущий лейбл исчезнуть и быть выпущенным? - PullRequest
0 голосов
/ 25 мая 2011

Как сделать так, чтобы предыдущая «этикеточная коробка» исчезла и была выпущена? Я освобождаю объект, но он все равно просто создает новые «ящики для надписей» поверх «ящиков для надписей», когда я нажимаю и перемещаю.

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    [super touchesMoved:touches withEvent:event];

    CGPoint nowPoint = [[touches anyObject] locationInView:self.view];
    CGPoint prevPoint = [[touches anyObject] previousLocationInView:self.view];

    CGRect RectFrame1;
    RectFrame1 = CGRectMake(nowPoint.x, nowPoint.y, 280, 30);
    UILabel *label = [[UILabel alloc] initWithFrame:RectFrame1];
    label.text = [NSString stringWithFormat:@"x %f   y %f", nowPoint.x, nowPoint.y];
    label.backgroundColor = [UIColor blackColor];
    label.textColor = [UIColor whiteColor];
    [self.view addSubview:label];
    [label release];
    //[self release];
    //[&RectFrame1 release];
}

Ответы [ 4 ]

1 голос
/ 25 мая 2011

Если вы хотите удалить его из представления, используйте removeFromSuperview

[urlabel removeFromSuperview];
0 голосов
/ 25 мая 2011

Я думаю, что вы отображаете каждую точку прикосновения на этикетке.Вы можете решить эту проблему, изменив свой код ...

CGRect RectFrame1;
UILabel * label = (UILabel *)[self.view viewWithTag:111];
//Here 111 is used you can use your own tags
if(label==nil){   

    RectFrame1 = CGRectMake(nowPoint.x, nowPoint.y, 280, 30);
    label = [[UILabel alloc] initWithFrame:RectFrame1];    
    label.backgroundColor = [UIColor blackColor];
    label.textColor = [UIColor whiteColor];
    label.tag = 111;//Adding tag to our label so that we can call it later.
    label.text = [NSString stringWithFormat:@"x %f   y %f", nowPoint.x, nowPoint.y];
    [self.view addSubview:label];
    [label release];

} else {

    RectFrame1 = label.frame;
    RectFrame1.origin = CGPointMake(nowPoint.x, nowPoint.y);
    label.frame = RectFrame1;
    label.text = [NSString stringWithFormat:@"x %f   y %f", nowPoint.x, nowPoint.y];

}

Надеюсь, это поможет вам ....:)

0 голосов
/ 25 мая 2011
[self removeChild:label cleanup:YES];  
0 голосов
/ 25 мая 2011

Что вы конкретно хотите сделать. Вы хотите удалить ярлык. [label release] освободит экземпляр из памяти, а не из представления. [label removeFromSuperview] удалит из поля зрения. Но добавление его в superview и его немедленное удаление кажется странным.

...