1

Прежде всего позвольте мне сказать вам, что я пытаюсь сделать:Как разрешить пользователю выбирать тип источника UIImagePickerController?

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

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

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

Вопросы:

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

ответ

0

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

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

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