2016-07-20 46 views
0

我想從圖庫加載圖像並將其顯示在UIImageView上。如何從Xamarin.ios中的圖庫中選擇圖像

我試圖像Xamarin食譜中的樣本那樣做,但是我得到的結果都是null。

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

到目前爲止我的代碼:

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

我得到空在這一行: NavigationController.PresentModalViewController(imagePicker, true);

我做錯了嗎?

感謝您的幫助!

親切的問候,

回答

2

看來,你沒有使用UINavigationController,所以更改:

NavigationController.PresentModalViewController(imagePicker, true); 

要:

PresentModalViewController(imagePicker, true); 

注:PresentModalViewController被廢棄了,因爲iOS6的,所以你可以更改要使用的代碼:

PresentViewControllerAsync(imagePicker, true); 

或者:

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

哇真棒這樣一個簡單的解決方案!謝謝!!! – raymondis

相關問題