2015-08-06 18 views
6

Próbuję przedstawić bibliotekę zdjęć w popover na iPadzie z iOS 9 beta 4 i Swift. Preferowany jest przez popover, ale UIPopoverController jest teraz przestarzałe. Wygląda na to, że teraz jest to zrobione przez UIViewController, ale nie ma dokumentacji ani kodu przykładowego, który mógłbym znaleźć. Każda pomoc będzie bardzo ceniona!Jak zaprezentować UIImagePickerController w Popover z iOS 9 i Swift

Dziękujemy!

Odpowiedz

2

Nie wprowadziłem tutaj delegacji i obsługi odpowiedzi selektora obrazu, celem tego postu było po prostu rozważenie użycia UIImagePickerController bez uciekania się do przestarzałych klas i metod.

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 

Proszę poprawić w razie potrzeby

+0

Jak to zrobić w Objective-C? –

6

Powyższa odpowiedź jest prawie poprawne wyjątkiem tego, że kotwica w popoverPresentationController musi być ustawiona przed wywołaniem 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

Na dokumentację Apple: Konfigurowanie kontrolera prezentacji popover po wywołaniu presentViewController: animated: completion: może wydawać się sprzeczne z intuicją, ale UIKit nie tworzy kontrolera prezentacji, dopóki nie zainicjujesz prezentacji. Ponadto UIKit musi czekać do następnego cyklu aktualizacji, aby mimo to wyświetlić nową treść na ekranie. To opóźnienie daje ci czas na skonfigurowanie kontrolera prezentacji dla twojego popover. –

+2

Zamiast ustawiać barButtonItem można także ustawić sourceView, z którego zostanie wyświetlone okno popover. Jest to przydatne, jeśli nie masz przycisku barButton, z którego powinien zostać wyświetlony popover. – benrudhart

Powiązane problemy