2015-08-06 8 views
6

Ich versuche, die Foto-Bibliothek in einem Popover auf einem iPad mit iOS 9 Beta 4 und Swift zu präsentieren. Der bevorzugte Weg ist durch ein Popover, aber UIPopoverController ist jetzt veraltet. Anscheinend ist es jetzt durch UIViewController getan, aber es gibt keine Dokumentation oder Beispielcode, die ich finden könnte. Jede Hilfe würde sehr geschätzt werden!Wie man einen UIImagePickerController in einem Popover mit iOS 9 und Swift präsentiert

Vielen Dank!

Antwort

2

Ich habe hier keine Delegierung und Behandlung der Bildauswahlantworten eingegeben, der Zweck dieses Beitrags war einfach die Verwendung von UIImagePickerController zu berücksichtigen, ohne auf veraltete Klassen und Methoden zurückzugreifen.

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 

bitte korrigieren, wenn

benötigen
+0

Wie in Objective-c zu tun? –

6

Die obige Antwort ist fast richtig, außer dass der Anker in den popoverPresentationController muss vor presentViewController() dem Aufruf eingestellt werden:

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 Apple-Dokumentation: Konfigurieren des Popover-Präsentations-Controllers nach dem Aufruf von presentViewController: animiert: Vervollständigung: scheint nicht intuitiv, aber UIKit erstellt erst dann einen Präsentations-Controller, nachdem Sie eine Präsentation gestartet haben. Außerdem muss UIKit bis zum nächsten Aktualisierungszyklus warten, um auf dem Bildschirm sowieso neuen Inhalt anzuzeigen. Diese Verzögerung gibt Ihnen Zeit, den Präsentationscontroller für Ihr Popover zu konfigurieren. –

+2

Anstatt ein barButtonItem zu setzen, ist es auch möglich, eine sourceView festzulegen, aus der das Popover dargestellt wird. Dies ist hilfreich, wenn Sie kein barButton haben, aus dem das Popover dargestellt werden soll. – benrudhart

Verwandte Themen