Как удалить подпредставление, которое является UILabel - PullRequest
1 голос
/ 09 мая 2011

У меня есть представление прокрутки, в котором я добавляю несколько UIImageview.

Для каждого вида изображения я добавляю UIButton и UILabel.

Теперь я хочу удалить представление UILabel.

Пожалуйста, найдите с моим кодом ниже

 - (void)viewDidLoad {
    [super viewDidLoad];

    int h;
    for (h=0; h<3; h++) {
    UIImageView *k=[[UIImageView alloc]initWithFrame:CGRectMake(h*40, 0, 60, 90)];
    k.backgroundColor=[UIColor yellowColor];
    k.tag=h;

    UIButton *j=[[UIButton alloc]initWithFrame:CGRectMake(20, 20, 20, 20)];
    [j addTarget:self action:@selector(ge:) forControlEvents: UIControlEventTouchUpInside];
    j.backgroundColor=[UIColor redColor];
    [k addSubview:j];
    k.userInteractionEnabled=YES;
    [self.view addSubview:k];

    }

}

Здесь я просто добавляю изображение и кнопку. Если метка существует, удалите UILabel, иначе добавьте UILabel

Как только пользователь нажмет на кнопку

-(IBAction)ge:(id)sender{


    UIImageView *imageView = (UIImageView *)[sender superview];
    for (UIView *jkl in [[sender superview]subviews]) {
        if ([jkl isKindOfClass:[UILabel class]]){ 
            [jkl removeFromSuperview];


        } else {
            UILabel *y=[[UILabel alloc]initWithFrame:CGRectMake(20, 20, 20, 20)];

            y.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Close.jpeg"]];
            [imageView addSubview:y];
        }

    }

}

но UILabel не удаляется. Не могли бы вы помочь.

Ответы [ 2 ]

0 голосов
/ 10 мая 2011

Вы также пропускаете эти объекты UIImageView и UIButton.Вы выделяете / инициализируете их, которые устанавливают счет сохранения 1, а затем добавляете их как подпредставление, которое устанавливает счет хранения 2. Когда родительский вид, содержащий их, освобождается, он сбрасывает эти представления до счетчика хранения 1, но никогда не удаляетих.Вы должны либо выполнить alloc / init / autorelease для них при первом создании, либо выпустить их после добавления в качестве подпредставлений для решения этой проблемы.

0 голосов
/ 09 мая 2011

Похоже, что вы добавляете метку как подпредставление вашего imageView, но код, который пытается удалить метку, проходит по [[sender superview] subviews] - это подпредставления родительского представления imageView.Попробуйте вместо этого изменить код на цикл [sender subviews].

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