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