Tworzę aplikację, w której dodaję podwidok do widoku za addSubview:
pomocą IBAction
. W ten sam sposób, gdy przycisk z tymIBAction
zostanie ponownie dotknięty, powinien wywołać removeFromSuperview
ten widok podrzędny dodany do tego IBAction
:
PSEUDO KOD
-(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
pmerino
źródło
źródło
addSubview:
metody (co prawdopodobnie dzieje się za pierwszym razem), następnym razem dotrzesz do innej części, ponieważ drugi widok jest teraz podziałem pierwszego. Czy to nie jest to, co próbowałeś zrobić? Może szukasz innego mekanizmu, jak modalne prezentowanie kontrolera widoku?popoverView
jest to widok podrzędny rootView (rootViewController). Chcę sprawdzić, czy jest na ekranie (jeśli ma rootView jako superview) i jeśli tak, usuń go lub dodaj, jeśli nie jest[self popoverView]
za każdym razem zwraca nowo utworzony popover? nie może dodać widoku „ponad nim”, jeśli jest to ten sam widok, dodając widok, który już nie jest dostępny. jeśli zapopoverView
każdym razem metoda tworzy nową, to zawsze nie będzie w hierarchiiSpróbuj tego:
źródło
źródło
Odpowiednik Swift będzie wyglądał mniej więcej tak:
źródło
Sprawdź podgląd podwidoku ...
źródło
Twój stan powinien być podobny
źródło
isDescendantOfView:
?Tutaj zastosowaliśmy dwa różne widoki. Widok nadrzędny to widok, w którym szukamy widoku potomnego i sprawdzamy, czy został dodany do widoku rodzica, czy nie.
źródło