Я делаю приложение , где я добавить подвид к виду , используя addSubview:
на условиях IBAction
. Точно так же, когда кнопка с этим IBAction
снова нажата, должна вызвать removeFromSuperview
это подпредставление, добавленное к нему IBAction
:
Псевдокод
-(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];
}
}
ios
cocoa-touch
uiview
uikit
пмерино
источник
источник
addSubview:
метода (что, вероятно, имеет место в первый раз), в следующий раз вы перейдете к части else, потому что второе представление теперь является подпредставлением первого. Разве это не то, что вы пытались сделать? Возможно, вы ищете другой механизм, например, модальное представление контроллера представления?popoverView
это подвид rootView (rootViewController). Я хочу проверить, отображается ли он на экране (если у него есть rootView в качестве супервизора), и если да, удалите его или добавьте, если его нет[self popoverView]
возвращает вновь созданный поповер каждый раз? он не может добавить представление «поверх него», если это то же самое представление, добавляя представление, которое уже существует, без операции. еслиpopoverView
метод каждый раз создает новый, то он всегда не будет в иерархии представленийПопробуй это:
источник
источник
Эквивалент Swift будет выглядеть примерно так:
источник
Проверьте супервизор подпредставления ...
источник
Ваше условие if должно выглядеть как
источник
isDescendantOfView:
?Здесь мы использовали два разных взгляда. Родительское представление - это представление, в котором мы ищем представление-потомок и проверяем, добавлено ли оно к родительскому представлению или нет.
источник