On the iPad, when you use sources other than the camera feed, you present the UIImagePickerController in a popover, and you can use it as much as you like. But when you decide to select the source of UIImagePickerControllerSourceTypeCamera , the selection window displays full screen, and you have two cases:
- If you use your own controls (showCameraControls = NO), you can take as many images as you want with the same controller.
- If you use the default controls (showCameraControls = YES), after taking ONE picture, you MUST scatter the controller because it is not applicable again, and I think this is your business. You put the next controller on the stack after taking a photo, after that you try to return to your controller of choice, but it is unusable and you can see a black screen.
Apple docs for imagePickerController:didFinishPickingMediaWithInfo: ::
If you have determined that the CameraControls property for NO is displayed for image selection and provide your own controls, you can take several pictures before dismissing the image selection interface. However, if you set the YES property, your delegate must reject the image selection interface after the user takes one image or cancels the operation.
If you want to make another image, in this case you need to go back to the base controller and create an instance of UIImagePickerController again.
Hope this helps.
Edit: The easiest way IMO can rebuild your checkpoint controller is to remove the collector after shooting without animation and then show the next controller with animation. This will give the user the feeling that the next controller is displayed immediately after the selection controller without “blinking”.
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { [self dismissViewControllerAnimated:NO completion:^{ [self presentViewController:<newController> animated:YES completion:nil]; }]; }
source share