2013-01-24 2 views
0

사용자가 반복적으로 새 UIViewController를 뷰에 추가 할 수 없도록 내 뷰가 이미 뷰에 추가되었는지 확인하고 싶습니다. 그것은 결코ViewController가 뷰 스택에 이미 있는지 확인하십시오.

viewAlreadyDisplayed = YES; 

보기가 이미 표시되는 경우 찾는 것에 대해 갈 수있는 올바른 방법은 무엇입니까을 유발하지 않기 때문에

if (!self.fmovc) 
    { 
     self.fmovc = [[FMOVC alloc] initWithNibName: @"FMOVC" bundle:nil]; 
    } 

    BOOL viewAlreadyDisplayed = NO; 
    for (UIView * b in self.view.subviews) 
    { 
     if ([b isKindOfClass:[FMOVC class]]) 
     { 
      viewAlreadyDisplayed = YES; 
     } 
    } 

    if (!viewAlreadyDisplayed) 
    { 
     [self.view addSubview:self.fmovc.view]; 
    } 

이 작동하지 않습니다?

감사합니다, -code

+0

코드에 따라 뷰 내부에 viewController를 추가 하시겠습니까? 이게 내게 논리가 아니야? 어떤 viewController가 이미 푸시/프리젠 테이션되었거나 어떤 뷰가 이미 서브 뷰되어 있는지 확인하고 싶습니까? –

+0

이렇게하는 방법은 여러 가지가 있지만 "([b isKindOfClass : [FMOVC class]])", FMOVC는 viewcontroller이고 b는 UIView이므로 코드가 작동하지 않는 이유가 있습니다. 나는 그것을 테스트하지 않았지만 대신 "b == self.fmovc.view"를 시도 할 수있다. – Srikanth

답변

0

단지 removeItFromSuperView를 추가하기 전에 ... 그것은 말할 thatView를 UIView의 멤버 변수를 확인하여 확률값

[self.fmovc.view removeFromSuperview]; 
    [self.view addSubview:self.fmovc.view]; 
0

를 해결할 수 있습니다;

if (! thatView) { thatView = [[UIView alloc] init]; [self.view addSubView : thatView]; }

일단 수퍼 뷰를 릴리스하면 해당 뷰 &을 해제하고 해당 뷰를 무효로 만듭니다.

또는

항상 thatView를 할당하기 전에 수퍼에서 존재하는 경우 & 제거 thatView을 확인합니다.

희망이 도움이됩니다!

관련 문제