2014-04-09 2 views
-1

페이지에 새 하위보기를 추가하려고합니다. 그 자체 만 제외하고 모두 회색으로 표시됩니다. 그러나 화면의 하위보기에서 호출하고 있습니다. 이를 해결하려면 다음을 수행해야합니다.상위 SuperView는 어떻게 찾을 수 있습니까?

[self.view.superview.superview.superview.superview addSubview:self.cardDialog.view]; 

추측 할 수 있듯이, 이것은 매우 나쁜 코드입니다. 적절한 부모 레벨을 찾아 올바르게 설정하려면 어떻게해야합니까?

+0

적절한 부모를 어떻게 정의합니까? '창'? – Wain

답변

3

보기가보기 계층의 일부인 경우 window 특성을 사용하십시오.

UIView* topView = self.view.window; 

또는보기 아직 화면없는 경우 대상 하지 창 경우 만약

UIView* topView = [UIApplication sharedApplication].delegate.window; 

그밖에 앱 위임 통해 간접적 창 얻을 수 당신 걸어 수 원하는보기를 찾을 때까지 뷰 계층 구조 :

UIView* topView = self.view; 

while(topView.superview != nil){ 
    topview = topView.superview; 

    if(/*topview is the one you were looking for*/){ 
     break; 
    } 
} 
+2

뷰가 아직 화면 상에 있지 않은 한,'self.view.window'는 똑같은 일을합니다. – Wain

+0

그리고 OP가 정말로 창문을 찾고있는 것 같지 않습니다. 문제는 분명치 않다. – rmaddy

+0

@rmaddy 그래, 나는 창문이 최종 목표라고 생각했다. – michaels

0

나는이 상황에서 한 번 자신을 발견하고 포기합니다. 대신 교차 변형을 사용하여 modalView를 사용하기로 결정했습니다. 뿐만 아니라 당신은 가지고있는 문제를 피할 수 있지만 물건을 정리 유지하는 데 도움이됩니다. 최근에는 parentVC의 스냅 샷을 모아서 modalView로 보내서이 aproach를 개선 한 다음 색조를 적용합니다. 전반적인 효과는 정확히 당신이 찾고있는 것입니다.

관련 문제