Uipopovercontroller dupliziert sich aus irgendeinem Grund
-
15-10-2019 - |
Frage
Ein sehr eigenartiger Fehler:
Ich habe BarbuttonItem, das einen solchen Uipopoverovercontroller herausstellt:
-(void) addNewProjectButtonClicked:(id)sender
{
//Some Preparations....
[popover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
Wie erwartet erscheint ein Popover -Controller am richtigen Ort.
Jetzt erwarte ich das, wenn ich berühre IRGENDWO Außerhalb des Popovers wird es entlassen.
Das einzige Problem ist, dass, wenn ich wieder auf den Barbutton schlug (das, der den Popover gepoptete), anstatt den alten zu entlassen und ein neues zu präsentieren, wie ich es erwarten würde, das Ergebnis ist EIN WEITERER Popover über dem vorhandenen. Das heißt, wenn ich immer wieder drücke, bekomme ich einen Stapel Popovers, der nur mit mehreren Klicks an einem anderen Ort abgewiesen werden kann.
Ich weiß, dass ich hier ein Singleton-Designmuster verwenden kann, um dies zu lösen, aber gibt es nicht eine einfachere und integrierte Möglichkeit, sich darum zu kümmern?
Vielen Dank!
Lösung
Ich bin vor ein paar Monaten auf dasselbe Problem gestoßen, dachte, es würde sich selbst entlassen, als ich tippte irgendetwas Aber es ist nicht der Fall.
Die Art und Weise, wie ich damit zu tun habe UIBarButtonItem
ist abgebildet.
-(void) addNewProjectButtonClicked:(id)sender
{
[popover dismissPopoverAnimated:YES];
// Set it up again.
[popover ...];
}
Sie können eine Eigenschaft für eine einfache Speicherverwaltung verwenden oder selbst umgehen.