[ios] 하위보기가보기에 있는지 확인

내가 사용하여 뷰에 하위 뷰를 추가 응용 프로그램 만들고있어 addSubview:온을 IBAction. 같은 방식으로 버튼 IBAction이 다시 터치되면 removeFromSuperview해당 하위 뷰를 호출해야 합니다 IBAction.

PSEUDO 코드

-(IBAction)showPopup:(id)sender
{
    System_monitorAppDelegate *delegate = (System_monitorAppDelegate *)[[UIApplication sharedApplication] delegate];
    UIView *rootView = delegate.window.rootViewController.view;

    if([self popoverView] is not on rootView)
    {
        [rootView addSubview:[self popoverView]];
    }
    else
    {
        [[self popoverView] removeFromSuperview];
    }

}



답변

아마도 UIView 클래스 참조 에서 -(BOOL)isDescendantOfView:(UIView *)view;가져온 UIView를 찾고있을 것입니다 .

반환 값
수신자가 뷰의 즉각적이거나 먼 하위 뷰이거나 뷰가 수신자 자체 인 경우 YES; 그렇지 않으면 아니오.

다음과 같은 코드가 생성됩니다.

목표 -C

- (IBAction)showPopup:(id)sender {
    if(![self.myView isDescendantOfView:self.view]) {
        [self.view addSubview:self.myView];
    } else {
        [self.myView removeFromSuperview];
    }
}

스위프트 3

@IBAction func showPopup(sender: AnyObject) {
    if !self.myView.isDescendant(of: self.view) {
        self.view.addSubview(self.myView)
    } else {
        self.myView.removeFromSuperview()
    }
}


답변

이 시도:

-(IBAction)showPopup:(id)sender
{
    if (!myView.superview)
        [self.view addSubview:myView];
    else
        [myView removeFromSuperview];
}


답변

    UIView *subview = ...;
    if([self.view.subviews containsObject:subview]) {
        ...
    }


답변

Swift에 해당하는 것은 다음과 같습니다.

if(!myView.isDescendantOfView(self.view)) {
    self.view.addSubview(myView)
} else {
    myView.removeFromSuperview()
}


답변

서브 뷰의 수퍼 뷰를 확인하십시오 …

-(IBAction)showPopup:(id)sender {
    if([[self myView] superview] == self.view) {
        [[self myView] removeFromSuperview];
    } else {
        [self.view addSubview:[self myView]];
    }
}


답변

당신의 if 조건은

if (!([rootView subviews] containsObject:[self popoverView])) {
    [rootView addSubview:[self popoverView]];
} else {
    [[self popoverView] removeFromSuperview];

}


답변

여기에서는 두 가지 다른보기를 사용했습니다. 상위보기는 하위보기를 검색하고 상위보기에 추가되었는지 여부를 확인하는보기입니다.

if parentView.subviews.contains(descendantView) {
   // descendant view added to the parent view.
}else{
  // descendant view not added to the parent view.
}