【问题标题】:Dismiss ImagePickerController and transition to new ViewController seamlessly关闭 ImagePickerController 并无缝过渡到新的 ViewController
【发布时间】:2023-03-19 10:57:01
【问题描述】:

我有一个viewController VC1,我在其中展示了一个带有sourcetype 相机的UIImagePickerController。然后在拍照后,转换到一个使用图像的新viewController。问题是,我怎样才能解除imagePicker 并无缝过渡到我的新viewController。例如在我的

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

方法,我尝试使用这两种方法中的任何一种来关闭 picker 并无缝呈现新的viewController

[self.presentedViewController presentViewController:postControl animated:NO completion:^{
        [picker dismissViewControllerAnimated:NO completion:nil];
    }];

/*
[picker dismissViewControllerAnimated:NO completion:^{
        [self presentViewController:postControl animated:NO completion:nil];
    }];
*/

显然第一个是错误的,因为我要求呈现视图控制器在其动画期间自行关闭,从而导致错误。如果我将picker 更改为self.presentingViewController,它永远不会关闭相机,并且第二位代码(注释的那个)可以工作,但不是无缝的,换句话说,您可以看到转换。

很抱歉不理解这个问题,但我只是没有看到它。如何在无缝呈现postControl 之后或之前关闭相机? 如,您看不到过渡?

【问题讨论】:

    标签: ios objective-c uiimagepickercontroller


    【解决方案1】:
    UIViewController* toPresentViewController = [[UIViewController alloc] init];
    
    [picker dismissViewControllerAnimated:YES completion:^
    {
        [self.presentingViewController presentViewController:toPresentViewController animated:YES completion:nil]
    }];
    

    【讨论】:

    • 这与我的第二种方法有什么不同(注释掉的那个)。另外,已经测试过了。它不是无缝的。这确实可以正常工作..就像我的代码在上面对注释文本所做的那样。但它需要在没有动画和不显示原始VC的情况下进行过渡
    • 另一种方法是从新视图控制器的 viewDidLoad 调用选择器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    • 2012-04-04
    • 2017-05-25
    • 2011-05-13
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    相关资源
    最近更新 更多