2014-10-03 10 views
5

Il mio problema è abbastanza semplice ma non riesco a trovare un modo per aggirarlo. Quando viene premuto un pulsante, presento un UIActionSheet con due opzioni (libreria/fotocamera). Quando gli utenti premono un pulsante su UIActionSheet, presento un UIPopoverController con la libreria di foto o presenta la fotocamera modalmente.Presentazione di un UIPopover da un UIActionSheet

Quando si preme un pulsante sul foglio di azione ottengo il seguente avviso nella console:

Warning: Attempt to present <UIImagePickerController: 0x17ae1600> on <MyViewController: 0x17a3ca00> which is already presenting <UIAlertController: 0x1884acb0>

Tutte le idee su una soluzione adatta?

risposta

16

Ho trovato che questo stava accadendo su iOS8. Stavo presentando il popover da actionSheet:clickedButtonAtIndex:. La soluzione per me era usare actionSheet:didDismissWithButtonIndex: invece.

+2

Anche il problema si è verificato per iOS 8. Ho appena provato questa soluzione e funziona, grazie. Anche se la risposta selezionata in precedenza funziona anche questa è una soluzione migliore. –

+0

Funziona, grazie! – Insider

+0

Questo ha funzionato solo per me * dopo * Ho disattivato l'animazione per visualizzare il foglio di azione in primo luogo. –

0

Suggerirei di attendere che UIActionSheet sia nascosto prima di presentare un altro controller di visualizzazione. Quindi spostare il codice che presenta la nuova vista controller dal actionSheet: clickedButtonAtIndex: metodo in un altro metodo e chiamare in modo asincrono, vale a dire qualcosa come [self performSelector:@selector(presentImagePicker) withObject:nil afterDelay:1.0];

Il ritardo di 1 secondo permette al actionsheet da nascondere prima di un altro controller di vista è presentato .

+0

Grazie. Funziona bene, anche se non mi piace forzare un ritardo. Se non ci sono soluzioni migliori lo userò. –

+1

1 secondo potrebbe essere prudente: potresti farla franca con un tempo più breve (forse in effetti qualsiasi cosa sopra lo zero). Fintanto che il foglio di azione si sta animando, penso che scoprirai che succederà qualcosa sullo schermo in risposta al loro tocco e l'utente non noterà molto il ritardo. – danielquokka

+0

Ho cambiato il ritardo a 0,25 e funziona ancora ed è un po 'più agevole. Grazie per l'aiuto. –

Problemi correlati