2014-09-05 2 views
0

화면에 포함 된 모든보기 이름의 텍스트 파일을 쓰려고합니다. 예를 를 들어 나는 2 UIButtons 그래서 파일로 울부 짖는해야 가지고있는 UIView을 ..이UIView 계층 구조 작성

UIWindow 
    UIView 
     UIButton 
      UIButtonLabel 
     UIButton 
      UIButtonLabel 
     _UILayoutGuide 
     _UILayoutGuide 

이 내가 할 노력하고있어 어떻게하지만 달성 할 수없는거야 위의 계층 구조.

-(void) writeViewHierarchyForView:(UIView *)aView inString:(NSMutableString *)str 
{ 
    //NSMutableString *str = [[NSMutableString alloc] init]; 
    NSLog(@"title Text = %@", aView.titleText); 
    if(nil == aView.children){ 
     [str appendString:@"\n"]; 
     return; 
    } 
    else{ 
     for(UIView *view in aView.subview){ 
      [str appendString:@"\n\t"]; 
      [str appendString:view.name]; 
      NSLog(@"%@",view.name); 
      [str appendString:@"\t"]; 
      [self writeViewHierarchyForView:view inString:str]; 
     } 
    } 
} 

이것은 어떤 프로젝트에서도 사용하고있는 것이 아니라 재미있게하는 것입니다. 제안 사항이 우수 할 것입니다.

+0

을 위해 ([self.view의 파단]에서의 UIView *보기) {. ..} 이 방법은 단일 뷰에서 모든 하위 뷰를 얻을 것이다. 그래서 하나의 뷰에서 다른 서브 뷰에 대한 다른 검색으로 이동하고 ur 작업을 수행하십시오. – nikhil84

+0

@ walle84 문제는 서브 뷰를 얻지 못하는 것입니다. 이미 그 방법을 알고 있습니다. 하지만 문제는 계층 수준 (문제의 언급)에 따라 텍스트 파일에 하위 뷰 이름을 덤프하는 것입니다. – Suryakant

답변

2

문서화되지 않은 비공개 API이므로 다음 코드를 사용하여 응용 프로그램을 앱 스토어에 제출할 수는 없지만 디버깅에는이 코드를 사용할 수 있습니다 (

). 중단 점에있을 때

NSLog(@"%@", [self.view valueForKey:@"recursiveDescription"]);

당신은 또한 디버깅을위한 LLDB 콘솔에서 recursiveDescription를 사용할 수 있습니다

po [someView recursiveDescription]

+0

예,이 코드가있는 앱을 제출하지 않을 것이며 이는 내가 찾고있는 것입니다. 감사합니다. – Suryakant