2016-07-20 4 views
0

Ich möchte ein Bild aus der Galerie laden und auf einem UIImageView anzeigen.So wählen Sie ein Bild aus der Galerie in Xamarin.ios

Ich habe versucht, es wie in der Probe in Xamarin Rezepte zu tun, aber alles, was ich bekomme, ist null.

https://developer.xamarin.com/recipes/ios/media/video_and_photos/choose_a_photo_from_the_gallery/

My-Code so weit:

public partial class ViewController : UIViewController 
    { 
    UIImagePickerController imagePicker; 
    UIButton choosePhotoButton; 
UIImageView imageView; 

public ViewController(IntPtr handle) : base(handle) 
{ 
} 

public ViewController() 
{ 
} 

public override void ViewDidLoad() 
{ 
    base.ViewDidLoad(); 
    Title = "Wähle Bild aus:"; 
    View.BackgroundColor = UIColor.White; 

    imageView = new UIImageView(new CGRect(10, 150, 300, 300)); 
    Add(imageView); 

    choosePhotoButton = UIButton.FromType(UIButtonType.RoundedRect); 
    choosePhotoButton.Frame = new CGRect(10, 80, 100, 40); 
    choosePhotoButton.SetTitle("Picker", UIControlState.Normal); 
    choosePhotoButton.TouchUpInside += (s, e) => 
    { 
     imagePicker = new UIImagePickerController(); 

     imagePicker.SourceType = UIImagePickerControllerSourceType.PhotoLibrary; 
     imagePicker.MediaTypes = UIImagePickerController.AvailableMediaTypes(UIImagePickerControllerSourceType.PhotoLibrary); 

     imagePicker.FinishedPickingMedia += Handle_FinishedPickingMedia; 
     imagePicker.Canceled += Handle_Canceled; 

     NavigationController.PresentModalViewController(imagePicker, true); 

    }; 

    View.Add(choosePhotoButton); 

} 


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

protected void Handle_FinishedPickingMedia(object sender, UIImagePickerMediaPickedEventArgs e) 
{ 
    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 
      imageView.Image = originalImage; // display 
     } 

     UIImage editedImage = e.Info[UIImagePickerController.EditedImage] as UIImage; 
     if (editedImage != null) 
     { 
      // do something with the image 
      Console.WriteLine("got the edited image"); 
      imageView.Image = editedImage; 
     } 
    } 

    // dismiss the picker 
    imagePicker.DismissModalViewController(true); 
} 

ich an dieser Linie null erhalten: NavigationController.PresentModalViewController(imagePicker, true);

Was ich falsch mache?

Danke für jede Hilfe!

Mit freundlichen Grüßen,

Antwort

2

scheint, dass Sie nicht ein UINavigationController, so ändern verwenden:

NavigationController.PresentModalViewController(imagePicker, true); 

An:

PresentModalViewController(imagePicker, true); 

Hinweis: PresentModalViewController seit iOS6 veraltet ist, so können Sie Ändern Sie den zu verwendenden Code:

PresentViewControllerAsync(imagePicker, true); 
Oder

:

PresentViewController(imagePicker, true,() => { 
}); 
+0

wow genial so eine einfache Lösung! Danke!!! – raymondis