2012-04-19 2 views
2

응용 프로그램을 개발 중입니다. 그 점에서 나는 UITableViewCell의 모든 하위 뷰를 얻습니다.하위보기가 버튼인지 확인하는 방법

(void)listSubviewsOfView:(UIView *)view { 

    // Get the subviews of the view 
     NSArray *subviews = [view subviews]; 

    // Return if there are no subviews 
    if ([subviews count] == 0) return; 

    for (UIView *subview in subviews) { 

     NSLog(@"%@", subview); 

     // List the subviews of subview 
     [self listSubviewsOfView:subview]; 
    } 
} 

하지만 내 문제는 하위 뷰 목록에서 버튼을 찾는 방법입니다 :

이 하나의 코드입니다. 이 문제를 해결하는 방법을 알려주십시오.

답변

12

이렇게 모든 하위 뷰를 반복 할 수 있습니다.

for (id subview in subviews) { 
    if ([subview isKindOfClass:[UIButton class]]) { 
     //do your code 
    } 
} 
-1

마틴의 답변에서 '코드 작성'부분을 확장하십시오. 하위 뷰를 얻은 후에는 해당 버튼이 올바른 버튼인지 테스트 한 다음 제거하려고했습니다. subview.titleLabel을 사용하여 버튼의 titleLabel을 직접 확인할 수 없으므로 하위 뷰를 UIButton에 할당 한 다음 버튼의 titleLabel을 선택했습니다.

- (void)removeCheckboxes { 

    for (id subview in self.parentView.subviews) { 
     if ([subview isKindOfClass:[UIButton class]]) { 
      UIButton *checkboxButton = subview; 
      if ([checkboxButton.titleLabel.text isEqualToString:@"checkBoxR1C1"]) [subview removeFromSuperview]; 
     } 
    } 

} 
2

스위프트 3 :

for subview in view.subviews { 
    if subview is UIButton { 
     // this is a button 
    } 
} 
관련 문제