2011-05-09 2 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의 제거 있으면 다른 버튼

-(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의

을 추가하지만, UILabel의 제거지고 있지 않습니다. 도와 주실 수 있니?

답변

0

label을 imageView의 하위보기로 추가하는 것처럼 보이지만 라벨을 제거하려는 코드는 [[sender superview] subviews]을 통해 반복됩니다. 이는 imageView의 상위보기의 하위보기입니다. 대신 해당 코드를 [sender subviews]을 통해 반복하도록 변경하십시오.

0

또한 UIImageView 및 UIButton 개체가 누출됩니다. retain count를 1로 설정 한 후 할당 수를 2로 설정하는 하위보기로 추가합니다.이보기를 포함하는 상위보기가 해제되면 보유 수는 1이지만 삭제하지는 못합니다. 그들. 처음에 alloc/init/autorelease를 만들거나이 문제를 해결하기 위해 하위 뷰로 추가 한 후에 해제해야합니다.

관련 문제