2013-05-23 4 views
0

에 특정 태그를 가진 모든 요소를 ​​선택 나는엑스 코드

가 어떻게 그들 모두를 액세스/선택에 대해 갈 것 같은 태그 (15) UIButtons이?

는 궁극적으로, 나는 이벤트 트리거에 그들 모두의 속성을 변경하려면, 나는, 15 개의 IBOutlets를 만들 .. 배열 등

편집을 넣어 싶지 않아 : 내가 아는 나는

UIButton *btn= (UIButton *)[self.view viewWithTag:12]; 

하나의 요소에 액세스 할 수 있습니다하지만

+0

참조 – Undo

+0

내 대답은 아래 나는이 작업을 수행하기위한 표준 API에서 아무것도 알고 아니지만, 부모보기를 사용하면 하위보기를 반복하고 태그 속성을 확인할 수 있습니다. – HexAndBugs

답변

1

당신의 파단을 통해 문 루프는 다음과 같은 경우를 작성하는 올바른 방법 :

for (id aSubview in self.view.subviews){ 
    if ([aSubview isKindOfClass:[UIButton class]] && ([(UIButton *)aSubview tag] == 42)) { 
     NSLog(@"found button with tag 42"); 
     // do whatever here 
    } 
} 
+0

이것은 올바른 원인 'id'가 어떤 종류의 객체라도 추측 할 수 있지만 여전히 인쇄되지 않습니다. 내가 처음 발견 한 뷰를 통해 반복 경우, 작동하는 것 같다 상점 : (self.view.subviews에 btn을있는 UIButton *)에 대한 (btn.subviews에있는 UIButton이 * ABC) 경우에 대한 ([abc isKindOfClass : [UIButton class]]) .. nslog titleLabel 텍스트는 모든 버튼 텍스트를 인쇄합니다. 네가 일할 것이라고 확신했는데, 왜 그렇게 나빴는지 모르겠다. – PenguinSource

+0

@rdelmar, 문제는 단추가 다른보기 내에서 여러 개의 서로 다른 중첩 수준에 있다는 것입니다. 동일한 코드를 제안했습니다. – Undo

+0

모든 버튼은 모두 1 개보기 내에 있습니다. 둥지가 없습니다. 그들은 사실상 uiviewcontroller에 배치됩니다. 아무런 추가보기가 없습니다. – PenguinSource

3

NSArray 옵션은 쉽게 같은 태그 또는 다른 속성이 그 이상을 액세스하여 어떻게 갈 것입니다. 이 같은 하나의 출구를 구성 할 수 있습니다

@property (weak, nonatomic) IBOutletCollection (UIButton) NSArray *buttons; 

합니다 (임의의 컨테이너 뷰에있을 수있는 버튼을 가정) 재귀 검색 알고리즘을 쓸 필요가 태그를 사용합니다.

+0

iboutletCollection 객체를 인식하지 못했습니다. Undo의 작업량을 얻으려고 노력하고 있는데, 그것은 똑바로 보일 수도 있지만, 이것은 또한 좋은 것입니다. – PenguinSource

+1

@PenguinSource 당신은 당신의 문제에 도움이된다고 생각하는 답변을 upvote 할 수 있습니다. – Undo