2016-07-20 7 views
0

ギャラリーから画像を読み込み、UIImageViewに表示します。Xamarin.iosのギャラリーから画像を選択する方法

私はXamarin Recipesのサンプルのようにしましたが、得られるのはすべて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); 
} 

私はこのラインではnullを取得: NavigationController.PresentModalViewController(imagePicker, true);

私が間違ってやっていますか?

ありがとうございました!

NavigationController.PresentModalViewController(imagePicker, true); 

へ:

種類よろしく、

答えて

2

あなたはUINavigationControllerを使用して、それほど変化していないことが表示されます

PresentModalViewController(imagePicker, true); 

注:PresentModalViewControllerが廃止されましたios6以来、あなたができるので、コードを変更して使用してください:

PresentViewControllerAsync(imagePicker, true); 

または:

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

すごいすごい、このような単純な解決策!ありがとうございました!!! – raymondis

関連する問題