2013-09-04 3 views
3

UIScrollView에있는 모든 하위 뷰의 배열을 가져와야합니다. 지금은 사용하고있다UIScrollView에 대한 모든 하위 뷰 얻기

NSArray *subviews = [myScrollView subviews]; 

그러나 이것은 코드가 실행될 때 볼 수있는 하위보기 만 반환하는 것으로 보입니다. UIScrollView의 전체 범위에서 모든 하위 뷰가 필요합니다. 심지어는 현재 숨겨져있는 서브 뷰도 있습니다 (화면 에서처럼). 나는 그것을 어떻게 얻을 것입니까? 그것의 모든 콘텐츠입니다 표시 할만큼 큰 있다면

기본적으로, 나는 UIScrollView 단지 크기를 반환하는 대신 제외하고 UIScrollViewcontentSize 재산 같은 것을 찾고 있어요, 나는 그것이 콘텐츠 자체를 반환하려면 .

EDIT : 생각한 것 :이 스크롤 기능이 작동하지 않는 것은 실제로는 UITableView입니다. 화면에 보이지 않는 셀을 비우는 것 같아요. 나타나지 않아. 확인을 위해 몇 가지 테스트를 할 것입니다.

+0

코드가 작동해야합니다. 해당 뷰가 언제/어떤 시점에서 스크롤 뷰에 추가됩니까? –

+1

하위보기는 표시되거나 숨겨지는 모든 하위보기에 응답합니다. 사실,이 질문에 대한 일반적인 생각은 서브 뷰가 스크롤 표시기를 포함하여 _ 많은 수의 하위 뷰에 응답한다는 것입니다. 코드를 추가하는 것보다 더 많이 추가한다고 생각하는 곳에 코드를 게시하십시오. – danh

+0

편집이 정확합니다. 셀이 화면 밖으로 벗어나면 스크롤보기에서 제거되고 재사용 대기열에 배치됩니다. –

답변

3

TL; DR은

NSArray *subviews = [myScrollView subviews]; 

이 실제로 그들이 오프 화면에있는 경우에도 UIScrollView *myScrollView의 모든 서브 뷰를 반환 것으로 나타났다.


세부

실제로 내가 이걸 사용하려고했던 스크롤 뷰가 실제로 UITableView이었다이었다 가졌다 문제 및 UITableView에서 UITableViewCell 오프 스크린 갈 때, 실제로는 UITableView에서 제거됩니다. 따라서 subviews을 호출 할 무렵에는 찾고 있던 셀이 더 이상 스크롤 뷰에 없었습니다.

UITableViewCell을 모두 내 viewDidLoad이라는 별도의 메서드로 빌드 한 다음 모든 셀을 배열에 배치했습니다. 그런 다음 subviews을 사용하는 대신 방금 그 배열을 사용했습니다. 물론이 방법을 사용하면 성능이 약간 손상 될 수 있습니다 (cellForRowAtIndexPath에서 일반적으로 사용되는 dequeueReusableCellWithIdentifier 메서드보다 느린 배열에서 셀을 반환 함). 그러나이 동작을 얻으려는 유일한 방법이었습니다 내가 필요.

7

다음 코드를 사용해보십시오.

for(UIView * subView in myScrollView.subviews) // here write Name of you ScrollView. 
{ 
    // Here You can Get all subViews of your myScrollView. 
    // But For Check subview is specific UIClass such like label, button, textFiled etc.. write following code (here checking for example UILabel class). 

     if([subView isKindOfClass:[UILabel class]]) // Check is SubView Class Is UILabel class? 
     { 
      // You can write code here for your UILabel; 
     } 
} 
+0

빠른 답장을 보내 주셔서 감사합니다.하지만 저는 여러분이 제가 묻는 것을 아주 잘 이해하고 있다고 생각하지 않습니다. 서브 뷰를 찾은 후에 하위 뷰를 사용하는 방법에 대한 도움이 필요하지 않습니다. 현재 서브 뷰를 얻는 데 도움이 필요합니다. – GeneralMike

+0

방금 ​​시도하고 모든 하위 뷰를 반환해야합니다. subviews 속성은 UIView에서 상속되며 UIScrollView와 관련이 없습니다. 하위 뷰를 모두 얻지 못했다는 것을 어떻게 알 수 있습니까? –

관련 문제