2016-04-23 6 views
0

hallo ich auf einer App für iOS arbeite, die ein Bild aufnimmt und speichert sie in die Kamera Rolle ich auf dem DismissModalViewController diese Störung erhalte:UIImagePickerController‘enthält keine Definition für‚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?) 

ich weiß nicht, was ich für die Klasse meinen Code falsch heres tue:

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); 
     } 
    } 
} 

ich Xamrian iOS bin mit dieser App machen, um jede mögliche Hilfe auf diesem würde erstaunlich sein!

Vielen Dank im Voraus !

Antwort

0

ersetzen DismissModalViewControllerAnimated:

imagePicker.DismissModalViewControllerAnimated(true); 

Mit DismissModalViewController:

imagePicker.DismissModalViewController (true); 

Der Animated boolean Parameter übernimmt die Animation.

+0

das hat funktioniert, vielen Dank! :) – Phoneswapshop

2

Sie sollten imagePicker.DismissViewController(true, null); verwenden, um die Bildauswahl zu schließen.

Der erste Parameter gibt an, ob der Controller animiert ist oder nicht.

Der zweite Parameter ist eine Methode, die aufgerufen wird, wenn die Animation abgeschlossen ist.

+0

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

+0

Ahhh, können Sie Besetzung ist als ein ' UIViewController "und das funktioniert ?, da' UIImagePickerController' keinen 'NSAction'-Parameter hat – SushiHangover

+0

@SushiHangover: Ich glaube nicht, dass Sie casten müssen, ich rufe nur Methode von einer Basisklasse. – Giorgi

Verwandte Themen