呈现UIImagePickerController会崩溃应用程序

DrP*_*nce 5 uiimagepickercontroller xamarin.ios ios xamarin

我试图通过Button动作呈现UIImagePickerController.我的项目因错误而崩溃:

执行本机代码时获得SIGABRT.这通常表示单声道运行时或应用程序使用的本机库之一出现致命错误.

我只在Storyboard中的NavigationController中嵌入了一个ViewController.代码片段如下:

UIImagePickerController imagePicker;

public override void ViewDidLoad()
{
    base.ViewDidLoad();

    this.setupImagePicker();

    CapturePhotoButton.TouchUpInside += delegate
    {
        this.AddMedia();
    };
}

public void setupImagePicker()
{
    imagePicker = new UIImagePickerController();
    imagePicker.SourceType = UIImagePickerControllerSourceType.Camera;
    imagePicker.ModalPresentationStyle = UIModalPresentationStyle.Popover;
    imagePicker.MediaTypes = UIImagePickerController.AvailableMediaTypes(
        UIImagePickerControllerSourceType.Camera);
    imagePicker.FinishedPickingMedia += HandleFinishedPickingMedia;
    imagePicker.Canceled += (sender, e) => {
        imagePicker.DismissModalViewController(true);
    };
}

public void HandleFinishedPickingMedia(object sender, 
    UIImagePickerMediaPickedEventArgs e)
{
    bool isImage = false;

    switch (e.Info[UIImagePickerController.MediaType].ToString())
    {
        case "public.image":
            isImage = true;
            break;
        case "public.video":
            break;
    }

    if (isImage)
    {
        UIImage originalImage = e.Info[UIImagePickerController.OriginalImage] as UIImage;
        if (originalImage != null)
        {
            PreviewImageView.Image = originalImage;
            imagePicker.DismissViewController(true, null);
        }
    }
}

public void AddMedia()
{
    //Crashes on this line
    this.NavigationController.PresentViewController(imagePicker, true, null);
}
Run Code Online (Sandbox Code Playgroud)

DrP*_*nce 3

将隐私 - 相机使用说明添加到您的 info.plist 中并解决了该问题