2014-10-15 12 views
6

Jednym z największych problemów z popovers sposób odwoływania metody Delegatury (-[popoverPresentationControllerShouldDismissPopover:], -[popoverPresentationControllerDidDismissPopover:]) są tylko zwane jeśli użytkownik odwołuje popover, jeśli nie zostaje odrzucona popover programowo.UIPopoverPresentationControllerDelegate metody zwane tylko na zwolnienia użytkownika

W moich metodach odwoływania jest mnóstwo ważnych kodów, które należy wywoływać. Czy istnieje eleganckie rozwiązanie, które zapewnia, że ​​kod ten zostanie wywołany nawet w przypadku programowego zwolnienia? (Oczywiście, mogę nazwać "powinienem" i "zrobiłem" za każdym razem, gdy zwalniam ... ale to jest podatne na błędy i rodzaj brutto.)

Dzięki.

+0

Czy znalazłeś jakieś eleganckie rozwiązanie? –

+0

Oto moje [odpowiedzi] (http://stackoverflow.com/a/38298712/4593553) proszę sprawdzić. – Jerome

Odpowiedz

2

Nie jestem świadomy lepszego rozwiązania niż ręczne wywoływanie go za każdym razem, gdy programowo go odrzucisz.

[self popoverPresentationControllerDidDismissPopover:self.popoverPresentation]; 

Jest to dość powszechne w iOS SDK. Na przykład, jeśli programowo wybierzesz wiersz w widoku tabeli, metoda delegata tableView:didSelectRowAtIndexPath: nie zostanie wywołana.

Powiązane problemy