Ich erstelle eine App, in der ich einer Ansicht eine Unteransicht hinzufüge, indem ich addSubview:
eine verwende IBAction
. Auf die gleiche Weise sollte, wenn die Schaltfläche mit dieser Taste IBAction
erneut berührt wird removeFromSuperview
, die hinzugefügte Unteransicht aufgerufen werden IBAction
:
PSEUDO-CODE
-(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
quelle
quelle
addSubview:
Methode (was wahrscheinlich der Fall ist das erste Mal), das nächste Mal, werden Sie den anderen Teil erreichen , da die zweite Ansicht jetzt ist ein Subview der ersten. Ist es nicht das, was Sie versucht haben? Sie sehen vielleicht einen anderen Mechanismus aus, als würden Sie einen View Controller modal darstellen?popoverView
Nun , ist eine Unteransicht von rootView (rootViewController). Ich möchte überprüfen, ob es auf dem Bildschirm ist (wenn es rootView als Übersicht hat) und wenn ja, entfernen Sie es oder fügen Sie es hinzu, wenn es nicht ist[self popoverView]
ein neu popover jedes Mal erstellt Zurückgeben? Es kann keine Ansicht "darüber" hinzugefügt werden, wenn es sich um dieselbe Ansicht handelt. Wenn Sie eine Ansicht hinzufügen, die bereits vorhanden ist, gibt es ein No-Op. Wenn diepopoverView
Methode jedes Mal eine neue erstellt, wird sie immer nicht in der Ansichtshierarchie seinVersuche dies:
quelle
quelle
Das Swift-Äquivalent sieht ungefähr so aus:
quelle
Überprüfen Sie die Übersicht der Unteransicht ...
quelle
Ihre if-Bedingung sollte wie gehen
quelle
isDescendantOfView:
?Hier haben wir zwei verschiedene Ansichten verwendet. Die übergeordnete Ansicht ist die Ansicht, in der wir nach der Nachkommenansicht suchen und prüfen, ob sie der übergeordneten Ansicht hinzugefügt wurde oder nicht.
quelle