2011-05-09 35 views
0

我有一个滚动视图,其中我添加了多个UIImageview的。如何删除子视图是UILabel

对于每个图像视图,我添加一个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是没有得到清除。你能帮忙吗?

回答

0

它看起来像是将标签添加为imageView的子视图,但试图移除标签的代码正在循环通过[[sender superview] subviews] - 这是imageView的父视图的子视图。尝试更改该代码,以便通过[sender subviews]来代替。

0

你也在泄漏那些UIImageView和UIButton对象。你分配/初始化他们将保留计数设置为1,然后将它们添加为将保留计数设置为2的子视图。当包含它们的父视图被释放时,它将这些视图释放到保留计数1,但从不删除他们。你应该在第一次创建它们时对它们做一个alloc/init/autorelease,或者在你将它们添加为子视图来解决这个问题之后释放它们。