2015-08-06 3 views
6

Я пытаюсь представить библиотеку фотографий в popover на iPad с iOS 9 beta 4 и Swift. Предпочтительный способ - через popover, но UIPopoverController теперь устарел. По-видимому, теперь это делается через UIViewController, но нет документации или кода кода, который я мог бы найти. Любая помощь будет принята с благодарностью!Как представить UIImagePickerController в Popover с iOS 9 и Swift

Спасибо!

ответ

2

Я не вступил в деле делегирования и обработки ответов на подборщик изображений здесь, цель этого поста просто состояла в том, чтобы рассмотреть использование UIImagePickerController, не прибегая к устаревшим классам и методам.

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 

пожалуйста Поправьте, если это необходимо

+0

Как сделать в Objective-C? –

6

выше ответ почти правильно, за исключением, что якорь в popoverPresentationController должен быть установлен перед вызовом 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 Apple документация: Настройка контроллера представления popover после вызова presentViewController: анимированный: завершение: может показаться контринтуитивным, но UIKit не создает контроллер представления до тех пор, пока вы не начнете презентацию. Кроме того, UIKit должен ждать, пока следующий цикл обновления не покажет новое содержимое на экране. Эта задержка дает вам время для настройки контроллера презентации для вашего popover. –

+2

Вместо установки barButtonItem также можно установить sourceView, из которого будет отображаться popover. Это полезно, если у вас нет barButton, из которого должен быть представлен popover. – benrudhart

Смежные вопросы