我有一个允许用户拍照的应用程序,当拍摄照片时(推动动作)应该导航到另一个视图控制器,以允许用户放弃,编辑或保存照片。我尝试从didFinishPickingMediaWithInfo方法中的摄像机视图控制器中进行切换,如下所示:
- (void) imagePickerController: (UIImagePickerController *) picker didFinishPickingMediaWithInfo: (NSDictionary *) info {
NSString *mediaType = [info objectForKey: UIImagePickerControllerMediaType];
UIImage *originalImage, *editedImage, *imageToSave;
// Handle a still image capture
if (CFStringCompare ((CFStringRef) mediaType, kUTTypeImage, 0) == kCFCompareEqualTo) {
editedImage = (UIImage *) [info objectForKey:
UIImagePickerControllerEditedImage];
originalImage = (UIImage *) [info objectForKey:
UIImagePickerControllerOriginalImage];
if (editedImage) {
imageToSave = editedImage;
} else {
imageToSave = originalImage;
}
// Save the new image to camera roll (will change later)
UIImageWriteToSavedPhotosAlbum (imageToSave, nil, nil , nil);
[self.capturedImages addObject: imageToSave];
_imageView.image = [self imageToSave:imageToSave];
}
CaptureViewController *capture = [[CaptureViewController alloc] init];
[self performSegueWithIdentifier:@"takePic" sender:self];
}
按下按钮时会调用didFinishPickingMediaWithInfo方法,提示[_picker takePicture];
这是我准备segue方法:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller
//this is just a temporary fix
if ([segue.identifier isEqualToString:@"takePic"]) {
CaptureViewController *destViewController = segue.destinationViewController;
}
}
segue标识符是" takePic",因此不是问题。那太简单了。当我尝试执行segue时,没有任何反应。相机仍会显示,imagePickerController's
cameraOverlayView
中的两个按钮仍然存在(尽管它们不起作用)。非常感谢帮助!
答案 0 :(得分:2)
我没有看到你在哪里解雇图像选择器控制器。 UIImagePickerController
pretty picky是关于你如何展示它的[picker dismissViewControllerAnimated:YES completion:nil];
。因此,请确保以预期的方式呈现它。捕获或选择图像时,还需要关闭图像选择器控制器。既然你没有看到它消失,我强烈怀疑你不会在任何地方解雇它。
添加如下行:
... didFinishPickingMediaWithInfo:
到您的{{1}}方法。