Как разрешить пользователю выбирать тип источника UIImagePickerController? - PullRequest
1 голос
/ 29 февраля 2012

Сначала позвольте мне рассказать вам, что я пытаюсь сделать:

  1. Когда пользователь нажимает кнопку, я хочу представить UIPopoverController с UINavigationController в качестве contentViewController (это на iPad)
  2. Первым UIViewController, вставленным в UINavigationController, будет пользовательский контроллер представления, имеющий 2 кнопки: «сделать снимок» и «выбрать из библиотеки».
  3. Если дотронуться до кнопки «сделать снимок», setSourceType:UIImagePickerControllerSourceTypeCamera на UIImagePickerController нажать и нажать на кнопку UINavigationController
  4. Нажать на кнопку «выбрать из библиотеки» будет setSourceType:UIImagePickerControllerSourceTypePhotoLibrary наUIImagePickerController и вставьте его в UINavigationController

Я хочу иметь возможность сделать все это и позволить пользователю перемещаться назад, как позволяет UINavigationController.

Проблема в том, что, поскольку UIImagePickerController также является UINavigationController, я не могу вставить его в другой UINavigationController, как указано в # 3 и # 4.

Вопросы:

  1. Могу ли я использовать UIImagePickerController с настраиваемым контроллером представления, помещаемым перед контроллерами представления камеры / библиотеки фотографий?
  2. Или, наоборот, есть ли у меня способ получить доступ к контроллеру представления камеры / библиотеки фотографий, чтобы подтолкнуть их в другой UINavigationController?
  3. Или есть другой способ, которым яполностью отсутствует здесь?

1 Ответ

0 голосов
/ 18 октября 2013

Добавление следующего кода (подробное описание здесь ) и решило этот вопрос для меня.

Используйте метод navigationController:willShowViewController:animated: для доступа к навигационной панели.

, затем с помощью этого кода вы можете добавить кнопку «Отмена».

if ([navigationController isKindOfClass:[UIImagePickerController class]]) {

    UINavigationBar *bar = navigationController.navigationBar;
    UINavigationItem *top = bar.topItem;

    UIBarButtonItem *cancel = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(imagePickerControllerDidCancel:)];
    [top setLeftBarButtonItem:cancel];

} else { 

    //do non imagePickerController things 

}
...