【问题标题】:Segue between view controllers not functioning视图控制器之间的 Segue 不起作用
【发布时间】:2014-07-17 06:57:16
【问题描述】:

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

【问题讨论】:

    标签: ios objective-c uiviewcontroller segue


    【解决方案1】:

    我没有看到您在哪里关闭图像选择器控制器。 UIImagePickerControllerpretty picky 关于你如何呈现它。因此,请确保您以预期的方式呈现它。当图像被捕获或选择时,您还需要关闭图像选择器控制器。既然你看不到它会消失,我强烈怀疑你不会在任何地方解雇它。

    添加如下一行:

    [picker dismissViewControllerAnimated:YES completion:nil];
    

    到您的... didFinishPickingMediaWithInfo: 方法。

    【讨论】:

    • 工作就像一个魅力!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    • 2015-05-24
    • 2016-12-31
    • 1970-01-01
    • 2012-08-10
    相关资源
    最近更新 更多