Ios 打开摄影机时如何将UIImagePicker放入视图层次

Ios 打开摄影机时如何将UIImagePicker放入视图层次,ios,objective-c,Ios,Objective C,基本上,我希望该应用程序能够像snapchat一样立即向摄像头打开。因此,AppDelegate将指向CameraViewController。它打开很好,我可以拍一张照片,它将重定向到该照片的“确认视图控制器”。但是如果我从库中选择,它会崩溃,因为“确认视图控制器”正在从“CameraViewController”调用,它不再在视图层次结构中,因为它调用了“LibraryImage Picker” 这是一张图表 ## AppDelega

基本上,我希望该应用程序能够像snapchat一样立即向摄像头打开。因此,AppDelegate将指向CameraViewController。它打开很好,我可以拍一张照片,它将重定向到该照片的“确认视图控制器”。但是如果我从库中选择,它会崩溃,因为“确认视图控制器”正在从“CameraViewController”调用,它不再在视图层次结构中,因为它调用了“LibraryImage Picker”

这是一张图表

                             ## AppDelegate ##
                                     |
                          ## CameraViewController ##
                       |                             |
         (photo captured)                (chose from libary button selected)
                  |                                  |
  ## ConfirmImageViewController ##         ## LibraryPickerViewController ##
                                                     |
                                                 (selected image)
                                                      |
                                             ## ConfirmImageViewController ##
我的代码如下:

摄像机控制器:

- (void)viewDidAppear:(BOOL)animated
{

[self setNeedsStatusBarAppearanceUpdate];

UIView *backgroundScreen = self.view;
backgroundScreen.backgroundColor = [UIColor colorWith8BitRed:32 green:32 blue:32 alpha:1];


self.imagePickerController = [[UIImagePickerController alloc] init];
self.imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
self.imagePickerController.view.autoresizingMask = NO;

self.imagePickerController.showsCameraControls = NO;
self.imagePickerController.delegate = self;

self.imagePickerController.cameraViewTransform = CGAffineTransformMakeScale(scale, scale);

CGRect f = self.view.window.bounds;

UIView *overlayView = [[UIView alloc] initWithFrame:f];
self.imagePickerController.cameraOverlayView = overlayView;

//cosmetic stuff, adding buttons to overlay view

[self presentViewController:self.imagePickerController animated:NO completion:nil];
When a photo is captured by pressing the capture button, I call a function that sets up a "ConfirmImageViewController" and then has self.imagePickerController present that view controller.

[self.imagePickerController presentViewController:self.confirmImageViewController animated:NO completion:nil];
That works fine. But if I select a photo from the library, it crashes because once the photo is selected in calls the same function above, which has

[self.imagePickerController presentViewController:self.confirmImageViewController animated:NO completion:nil];
Here's the code for when I select to choose from my photo library:

- (void)chooseFromLibraryButtonClicked: (id)sender;

{

UIImagePickerController *libraryPicker = [[UIImagePickerController alloc] init];
[libraryPicker.view setFrame:CGRectMake(0, self.view.bounds.size.height/2, self.view.bounds.size.width, self.view.bounds.size.height/2)];
[libraryPicker setSourceType:UIImagePickerControllerSourceTypeSavedPhotosAlbum];
[libraryPicker setDelegate:self];

[self.imagePickerController presentViewController:libraryPicker animated:YES completion:nil];


}
当按下捕获按钮捕获照片时,我调用一个函数,该函数设置“ConfirmImageViewController”,然后让self.imagePickerController显示该视图控制器

imagePickerController presentViewController:self.confirmImageViewController animated:NO completion:nil];
那很好。但是如果我从库中选择一张照片,它就会崩溃,因为一旦在中选择了照片,就会调用上面相同的函数,该函数

[self.imagePickerController presentViewController:self.confirmImageViewController animated:NO completion:nil];
以下是我从照片库中选择的代码:

- (void)chooseFromLibraryButtonClicked: (id)sender;

{

UIImagePickerController *libraryPicker = [[UIImagePickerController alloc] init];
[libraryPicker.view setFrame:CGRectMake(0, self.view.bounds.size.height/2, self.view.bounds.size.width, self.view.bounds.size.height/2)];
[libraryPicker setSourceType:UIImagePickerControllerSourceTypeSavedPhotosAlbum];
[libraryPicker setDelegate:self];

[self.imagePickerController presentViewController:libraryPicker animated:YES completion:nil];


}

我不懂流程。你们展示了一个带有相机源的图像选择器控制器,用户拍摄了一张照片,你们展示了一些控制器,然后你们展示了gallery中的另一个图像选择器?我添加了一个有点帮助的图表。但基本上,当选择图像时(通过捕获或库),它会调用一个函数,该函数让[self.imagepickercontroller]显示下一个视图控制器。但是如果我选择了“从库中选择”,我就不再在imagepickercontroller视图控制器中,我现在在库中。因此,当我选择一张照片并调用我提到的函数时,它会提交一个错误,因为self.imagepickercontroller不会显示下一个viewcontroller。