developer tip

하위보기가보기에 있는지 확인

copycodes 2020. 8. 29. 11:23
반응형

하위보기가보기에 있는지 확인


내가 사용하여 뷰에 하위 뷰를 추가 응용 프로그램 만들고있어 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];

}

참고 URL : https://stackoverflow.com/questions/7421298/check-if-a-subview-is-in-a-view

반응형