视图控制器之间无法正常运行

时间:2014-07-16 22:06:05

标签: ios objective-c uiviewcontroller segue

我有一个允许用户拍照的应用程序,当拍摄照片时(推动动作)应该导航到另一个视图控制器,以允许用户放弃,编辑或保存照片。我尝试从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中的两个按钮仍然存在(尽管它们不起作用)。非常感谢帮助!

1 个答案:

答案 0 :(得分:2)

我没有看到你在哪里解雇图像选择器控制器。 UIImagePickerController pretty picky是关于你如何展示它的[picker dismissViewControllerAnimated:YES completion:nil]; 。因此,请确保以预期的方式呈现它。捕获或选择图像时,还需要关闭图像选择器控制器。既然你没有看到它消失,我强烈怀疑你不会在任何地方解雇它。

添加如下行:

... didFinishPickingMediaWithInfo:

到您的{{1}}方法。