2011-05-09 61 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,或者在你將它們添加爲子視圖來解決這個問題之後釋放它們。