Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何允许用户选择UIImagePickerController的源类型?_Objective C_Ios_Uinavigationcontroller_Uiimagepickercontroller_Uipopovercontroller - Fatal编程技术网

Objective c 如何允许用户选择UIImagePickerController的源类型?

Objective c 如何允许用户选择UIImagePickerController的源类型?,objective-c,ios,uinavigationcontroller,uiimagepickercontroller,uipopovercontroller,Objective C,Ios,Uinavigationcontroller,Uiimagepickercontroller,Uipopovercontroller,首先让我告诉你我想做什么: 当用户点击一个按钮时,我想展示一个UIPopoverController,其中一个UINavigationController作为它的contentViewController,这是在iPad上 推入UINavigationController的第一个UIViewController将是一个自定义视图控制器,它有两个按钮:拍照和从库中选择。 触摸拍照按钮将在UIImagePickerController上设置源类型:UIImagePickerController源类型

首先让我告诉你我想做什么:

当用户点击一个按钮时,我想展示一个UIPopoverController,其中一个UINavigationController作为它的contentViewController,这是在iPad上 推入UINavigationController的第一个UIViewController将是一个自定义视图控制器,它有两个按钮:拍照和从库中选择。 触摸拍照按钮将在UIImagePickerController上设置源类型:UIImagePickerController源类型Camera并将其推入UINavigationController 触摸“从库中选择”按钮将在UIImagePickerController上设置源类型:UIImagePickerController源类型PhotoLibrary,并将其推入UINavigationController 我希望能够做到这一切,并允许用户在UINavigationController允许的情况下向后导航

问题是,由于UIImagePickerController也是一个UINavigationController,因此我无法将其推入另一个UINavigationController,如3和4所述

问题:

我是否可以使用UIImagePickerController,将自定义视图控制器推到摄影机/照片库视图控制器之前? 或者反过来说,我是否有办法访问摄影机/照片库视图控制器,将其推入不同的UINavigationController? 还是我在这里完全找不到另一条路?
添加以下详细的代码最终解决了这个问题

使用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 

}