2014-10-15 14 views
6

Eines der größten Probleme mit popovers ist, wie die entlassen Methoden des Delegierten (-[popoverPresentationControllerShouldDismissPopover:], -[popoverPresentationControllerDidDismissPopover:]) werden nur dann aufgerufen, wenn der Benutzer die popover entlässt, nicht, wenn die popover programmatisch des Feldes verwiesen.UIPopoverPresentationControllerDelegate Methoden aufgerufen nur auf Benutzer Entlassung

Es gibt viele wichtige Code in meinen Methoden zu entlassen, die aufgerufen werden müssen. Gibt es eine elegante Lösung, um sicherzustellen, dass dieser Code auch bei programmatischer Entlassung aufgerufen wird? (Sicher, ich kann "sollte" und "tat" jedes Mal, wenn ich entlassen ... aber das ist fehleranfällig und eine Art von Brutto.)

Vielen Dank.

+0

Haben Sie eine elegante Lösung gefunden? –

+0

Hier ist mein [Antworten] (http://Stackoverflow.com/a/38298712/4593553) Bitte überprüfen Sie. – Jerome

Antwort

2

Mir ist keine bessere Lösung bekannt, als sie jedes Mal manuell aufzurufen, wenn Sie sie programmgesteuert ablehnen.

[self popoverPresentationControllerDidDismissPopover:self.popoverPresentation]; 

Dies ist ziemlich häufig in der iOS SDK. Wenn Sie beispielsweise eine Zeile in einer Tabellenansicht programmgesteuert auswählen, wird die Delegatmethode tableView:didSelectRowAtIndexPath: nicht aufgerufen.

Verwandte Themen