Как разрешить пользователю выбирать тип источника UIImagePickerController?

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

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

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

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

Вопросы:

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



Ответы (1)


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

Используйте метод 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 

}
person Quentin    schedule 17.10.2013