2015-08-06 12 views
6

Sto provando a presentare la libreria di foto, in un popover, su un iPad con iOS 9 beta 4 e Swift. Il modo preferito è attraverso un popover, ma UIPopoverController è ora deprecato. A quanto pare ora è fatto attraverso UIViewController, ma non c'è documentazione, o codice di esempio là fuori che ho potuto trovare. Qualsiasi aiuto sarebbe molto apprezzato!Come presentare un UIImagePickerController in un Popover con iOS 9 e Swift

Grazie!

risposta

2

Non ho inserito la delega e la gestione delle risposte del selettore di immagini qui, lo scopo di questo post è stato semplicemente considerare l'utilizzo di UIImagePickerController senza ricorrere a classi e metodi deprecati.

let myPicker = UIImagePickerController() 
myPicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary 

myPicker.modalPresentationStyle = UIModalPresentationStyle.Popover 

self.presentViewController(myPicker, animated: true, completion: nil) 

let popper = myPicker.popoverPresentationController 
// returns a UIPopoverPresentationController 
popper?.barButtonItem = sender as? UIBarButtonItem 

Si prega di correggere, se necessario

+0

Come fare in Objective-C? –

6

La risposta di cui sopra è quasi corretto, tranne che l'ancora nella popoverPresentationController deve essere impostato prima di chiamare presentViewController():

let myPicker = UIImagePickerController() 
myPicker.delegate = self 
myPicker.sourceType = .PhotoLibrary 
myPicker.modalPresentationStyle = .Popover 

let ppc = myPicker.popoverPresentationController 
ppc?.barButtonItem = sender as? UIBarButtonItem 
ppc?.permittedArrowDirection = .Any 

presentViewController(myPicker, animated: true, completion: nil) 
+0

Per documentazione Apple: Configurazione del controller di presentazione popover dopo aver chiamato presentViewController: animato: completamento: potrebbe sembrare contro-intuitivo, ma UIKit non crea un controller di presentazione fino a dopo aver avviato una presentazione. Inoltre, UIKit deve attendere fino al prossimo ciclo di aggiornamento per visualizzare comunque nuovi contenuti sullo schermo. Questo ritardo ti dà il tempo di configurare il controller di presentazione per il popover. –

+2

Invece di impostare un oggetto BarButtonItem è anche possibile impostare un sourceView da cui verrà presentato il popover. Questo è utile se non si dispone di un barButton da cui deve essere presentato il popover. – benrudhart

Problemi correlati