Die Entlassung iPad UIPopoverController wenn BarButtonItem geschoben wird, während es geöffnet ist
Mithilfe einer split-Ansicht auf dem iPad, ich habe den folgenden code:
- (void) splitViewController:(UISplitViewController *)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)pc {
barButtonItem.title = @"Categories";
NSMutableArray *items = [[toolbar items] mutableCopy];
[items insertObject:barButtonItem atIndex:0];
[toolbar setItems:items animated:YES];
[items release];
self.popoverController = pc;
}
Dies funktioniert gut, um das popover, wenn die Taste gedrückt wird. Allerdings würde ich auch gerne das popover schließen, wenn der Knopf gedrückt wird, während es bereits offen ist, zu Folgen, gute Richtlinien. Wie würde ich gehen über das tun dies? (d.h., wenn der Benutzer wiederholt auf diese Schaltfläche klickt, wird das popover sollte kommen und verstecken jedes anderen hit.)
InformationsquelleAutor joshholat | 2010-04-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn splitViewController display popover, unten-Methode aufgerufen werden.
Prüfen Sie einfach, wenn nicht null, dann entlassen 🙂
Sollten Sie die popover-Eigenschaft isPopoverVisible zu überprüfen, anstatt zu überprüfen, ob nil
danke für die Korrektur, ich aktualisiert die Probe entsprechend 😀
InformationsquelleAutor sunnycmf
Apple HIG sagt, es sollte nicht sein, eine explizite schließen button in ein popover, sondern das zu tun, was Sie Fragen, haben Sie zwei Möglichkeiten.
1) post eine NSNotification
ODER
2) bohren Sie unten in den view-Hierarchie, bis Sie die popover-Instanz
1) in welcher Ansicht der Präsentation der popover, die sich in der viewDidLoad-Methode:
erstellen Sie eine Methode namens "dismissThePopover" und in der dealloc-Methode hinzu, removeObserver
In Ihrem popoverController "schließen" - Schaltfläche, geben Sie diese Zeile:
Tun, sendet eine Benachrichtigung an die app, und da Sie registriert haben, sind Ihre anderen view-controller, für Sie zu hören, wenn es sieht, dass die Meldung, so fordert der Selektor, den Sie angeben, in diesem Fall, dismissThePopover.
2) bohren Sie unten in den view-Hierarchie zu finden, sich selbst.popoverController
check this out, deins wird anders sein, sicher, aber die Allgemeine Idee ist die gleiche. Beginnen Sie in Ihrem AppDelegate, bewegen sich in den ersten viewcontroller, gehen Sie in den Untersichten, bis Sie erhalten, zu Ihrem selbst.popoverController Objekt.
Hoffe, das hilft
InformationsquelleAutor Justin
Dies ist viel einfacher, weil die popoverController ist eine Eigenschaft. Macht es einfacher zu verweisen.
Mir eigentlich nur klar, dass Sie ' re unter Bezugnahme auf den code in der Delegate-Methode für die Anzeige der viewController bei index:0 Ihr splitView. Diese Antwort muss nicht unbedingt gelten, aber nicht für jede andere mal, wenn Sie Zugriff auf und erstellen popoverControllers auf dem iPad. Ohne zu prüfen, ob ein popover ist vorher sichtbar, Sie wird entweder Abstürzen, oder öffnen Sie mehrere popovers.
Vielen Dank für Ihre Zeit.
InformationsquelleAutor Justin
Könnten Sie versuchen, die unten
InformationsquelleAutor Podcaster123
Wenn Sie die Standard -
UISplitViewController
setup, dann in der Navigationsleiste die Schaltfläche, die erstellt wird, zeigt ein popover IhrerRootViewController
.Wenn Sie wollen, stellen Sie sicher, dass Sie nicht mehrere pop-ups auf einmal, können Sie einfach schließen, pop-ups, Wann immer Ihr
RootViewController
erscheint. Hier ist der code, den ich verwendet, um dieses problem zu lösen:InformationsquelleAutor Smorpheus
Den code, den ich verwendet, um zu zeigen Sie das popover in RootViewController.m:
Dieser ich verwendet, um zu versuchen, und schließen Sie es von einer anderen Klasse:
Meine
dismissPopover
Funktion sieht wie folgt aus:InformationsquelleAutor joshholat
Ja, Sie können die
modalPresentationStyle
wie folgt:InformationsquelleAutor Son Nguyen