2014-10-15 7 views
6

Uno dei maggiori problemi con popovers è come respingere i metodi del delegato (-[popoverPresentationControllerShouldDismissPopover:], -[popoverPresentationControllerDidDismissPopover:]) sono chiamati solo se l'utentechiude la popover, non se la popover è respinto di programmazione.metodi UIPopoverPresentationControllerDelegate chiamato solo in caso di licenziamento utente

C'è un sacco di codice importante nei miei metodi di rimozione che devono essere richiamati. C'è una soluzione elegante per assicurarsi che questo codice venga chiamato anche in caso di licenziamento programmatico? (Certo, posso chiamare "dovrebbe" e "fatto" ogni volta che licenzio ... ma questo è soggetto a errori e un po 'grossolano.)

Grazie.

+0

Hai trovato una soluzione elegante? –

+0

Ecco le mie [risposte] (http://stackoverflow.com/a/38298712/4593553) per favore controlla. – Jerome

risposta

2

Non sono a conoscenza di una soluzione migliore rispetto a chiamarla manualmente ogni volta che la si chiude a livello di codice.

[self popoverPresentationControllerDidDismissPopover:self.popoverPresentation]; 

Questo è abbastanza comune nell'SDK di iOS. Ad esempio, se si seleziona a livello di codice una riga in una vista tabella, il metodo delegato tableView:didSelectRowAtIndexPath: non verrà chiamato.

Problemi correlati