2016-04-23 101 views
0

你好,我是在iOS版应用程序,拍照并保存到相机胶卷,我在DismissModalViewController得到这个工作的错误:的UIImagePickerController”不包含定义‘DismissModalViewControllerAnimated’Xamrian的iOS

Severity CodeError CS1061 'UIImagePickerController' does not contain a definition for 'DismissModalViewControllerAnimated' and no extension method 'DismissModalViewControllerAnimated' accepting a first argument of type 'UIImagePickerController' could be found (are you missing a using directive or an assembly reference?) 

我不知道我做错了我的继承人代码类:

using Foundation; 
using System; 
using System.CodeDom.Compiler; 
using UIKit; 
using CoreGraphics; 
using AssetsLibrary; 


namespace ToolBelt.iOS 
{ 
    partial class Camera : UIViewController 
    { 
     public Camera (IntPtr handle) : base (handle) 
     { 
     } 



     UIImagePickerController imagePicker; 
     UIImagePickerController picker = new UIImagePickerController(); 



     public override void ViewDidAppear(bool animated) 
     { 
      base.ViewDidAppear(animated); 

      imagePicker = new UIImagePickerController(); 
      imagePicker.PrefersStatusBarHidden(); 

      imagePicker.SourceType = UIImagePickerControllerSourceType.Camera; 

      //Add event handlers when user finished Capturing image or Cancel 
      imagePicker.FinishedPickingMedia += Handle_FinishedPickingMedia; 
      imagePicker.Canceled += Handle_Canceled; 

      //present 
      PresentViewController(picker, true,() => { }); 
     } 

     protected void Handle_FinishedPickingMedia(object sender, UIImagePickerMediaPickedEventArgs e) 
     { 
      // determine what was selected, video or image 
      bool isImage = false; 
      switch (e.Info[UIImagePickerController.MediaType].ToString()) 
      { 
       case "public.image": 
        Console.WriteLine("Image selected"); 
        isImage = true; 
        break; 
       case "public.video": 
        Console.WriteLine("Video selected"); 
        break; 
      } 

      // get common info (shared between images and video) 
      NSUrl referenceURL = e.Info[new NSString("UIImagePickerControllerReferenceUrl")] as NSUrl; 
      if (referenceURL != null) 
       Console.WriteLine("Url:" + referenceURL.ToString()); 

      // if it was an image, get the other image info 
      if (isImage) 
      { 
       // get the original image 
       UIImage originalImage = e.Info[UIImagePickerController.OriginalImage] as UIImage; 
       if (originalImage != null) 
       { 
        // do something with the image 
        Console.WriteLine("got the original image"); 
        imageView.Image = originalImage; // display 
       } 
      } 
      else 
      { // if it's a video 
       // get video url 
       NSUrl mediaURL = e.Info[UIImagePickerController.MediaURL] as NSUrl; 
       if (mediaURL != null) 
       { 
        Console.WriteLine(mediaURL.ToString()); 
       } 
      } 
      // dismiss the picker 
      imagePicker.DismissModalViewControllerAnimated(true); 
     } 

     void Handle_Canceled(object sender, EventArgs e) 
     { 
      imagePicker.DismissModalViewControllerAnimated(true); 
     } 
    } 
} 

我使用Xamrian的iOS,使这个应用程序,所以有这方面的帮助将是惊人的!

在此先感谢 !

回答

0

更换DismissModalViewControllerAnimated

imagePicker.DismissModalViewControllerAnimated(true); 

随着DismissModalViewController

imagePicker.DismissModalViewController (true); 

Animated布尔参数处理动画。

+0

工作非常感谢你! :) – Phoneswapshop

2

您应该使用imagePicker.DismissViewController(true, null);关闭图像选择器。

第一个参数指示控制器是否被解除动画。

第二个参数是动画完成时将调用的方法。

+0

@SushiHangover:https://developer.xamarin.com/api/member/MonoTouch.UIKit.UIViewController.DismissViewController/p/System.Boolean/MonoTouch.Foundation.NSAction/ – Giorgi

+0

啊,你可以施展作为一个'因为UIImagePickerController没有'NSAction'参数 – SushiHangover

+0

@SushiHangover:我不认为你必须施放,我只是从基类调用方法。 – Giorgi