Objective c 如何允许用户选择UIImagePickerController的源类型?
首先让我告诉你我想做什么: 当用户点击一个按钮时,我想展示一个UIPopoverController,其中一个UINavigationController作为它的contentViewController,这是在iPad上 推入UINavigationController的第一个UIViewController将是一个自定义视图控制器,它有两个按钮:拍照和从库中选择。 触摸拍照按钮将在UIImagePickerController上设置源类型:UIImagePickerController源类型Camera并将其推入UINavigationController 触摸“从库中选择”按钮将在UIImagePickerController上设置源类型:UIImagePickerController源类型PhotoLibrary,并将其推入UINavigationController 我希望能够做到这一切,并允许用户在UINavigationController允许的情况下向后导航 问题是,由于UIImagePickerController也是一个UINavigationController,因此我无法将其推入另一个UINavigationController,如3和4所述 问题: 我是否可以使用UIImagePickerController,将自定义视图控制器推到摄影机/照片库视图控制器之前? 或者反过来说,我是否有办法访问摄影机/照片库视图控制器,将其推入不同的UINavigationController? 还是我在这里完全找不到另一条路?Objective c 如何允许用户选择UIImagePickerController的源类型?,objective-c,ios,uinavigationcontroller,uiimagepickercontroller,uipopovercontroller,Objective C,Ios,Uinavigationcontroller,Uiimagepickercontroller,Uipopovercontroller,首先让我告诉你我想做什么: 当用户点击一个按钮时,我想展示一个UIPopoverController,其中一个UINavigationController作为它的contentViewController,这是在iPad上 推入UINavigationController的第一个UIViewController将是一个自定义视图控制器,它有两个按钮:拍照和从库中选择。 触摸拍照按钮将在UIImagePickerController上设置源类型:UIImagePickerController源类型
添加以下详细的代码最终解决了这个问题 使用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
}