6

Tôi có một ứng dụng chỉ dành cho iPad mà tôi đang cố gắng cho phép người dùng chọn hình ảnh từ PhotoLibrary của mình, gần như tôi có thể nói tôi phải sử dụng UIImagePickerController trong một UIPopOverController. Tôi đã thử nhiều cách khác nhau để làm điều này nhưng tôi có thể làm được mọi thứ. Tôi đã nhìn thấy rất nhiều đoạn mã nhưng tôi dường như không thể làm cho họ làm việc theo Monotouch.Monotouch - UIImagePickerController với Ứng dụng iPad

Ai đó có thể chỉ cho tôi cách chính xác để thực hiện việc này? Tôi rất cảm kích điều đó.

Trả lời

2

Đây là mã mà tôi đã sử dụng trong một ứng dụng - đây sẽ là một khởi đầu tốt để bạn làm cho nó hoạt động.

UIImagePickerController imagePicker; 
UIPopoverController popOver; 

void AttachImageBtnTouched(object sender, EventArgs e) 
{ 
    if (popOver == null || popOver.ContentViewController == null) 
    { 
     imagePicker = new UIImagePickerController(); 
     popOver = new UIPopoverController(imagePicker); 
     ImagePickerDelegate imgDel = new ImagePickerDelegate(); 
     imagePicker.Delegate = imgDel; 
     imagePicker.SourceType = UIImagePickerControllerSourceType.PhotoLibrary; 
    } 
    if (popOver.PopoverVisible) 
    { 
     popOver.Dismiss(true); 
     imagePicker.Dispose(); 
     popOver.Dispose(); 
     return; 
    } 
    else 
    { 
     popOver.PresentFromRect(btnAttachment.Frame, this.View, UIPopoverArrowDirection.Any, true); 
    } 
} 

// The Delegate class looks something like 

public class ImagePickerDelegate : UIImagePickerControllerDelegate 
{ 
    public ImagePickerDelegate() 
    {} 

    public override void FinishedPickingMedia(UIImagePickerController picker, NSDictionary info) 
    { 
     UIImage image = (UIImage)info.ObjectForKey(new NSString("UIImagePickerControllerOriginalImage")); 
     // do whatever else you'd like to with the image 
    } 
} 
3

tôi phải gọi mã tạo ra bảng chọn hình ảnh và mã số đó phản ứng với các hình ảnh được chọn từ các chủ đề chính để làm cho nó làm việc:

partial void OnImport (UIButton s) 
    { 
     BeginInvokeOnMainThread(delegate 
     { 

      UIImagePickerController picker = new UIImagePickerController(); 
      picker.ContentSizeForViewInPopover = new System.Drawing.SizeF(320,480); 

      UIPopoverController popover = new UIPopoverController(picker); 

      picker.FinishedPickingImage += delegate(object sender, UIImagePickerImagePickedEventArgs e) 
      {  
       BeginInvokeOnMainThread(delegate 
       { 
        UIImage image = (UIImage)info.ObjectForKey(new NSString("UIImagePickerControllerOriginalImage")); 
        picker.DismissModalViewControllerAnimated(true); 
        // do something with image 
       }); 

      }; 

      picker.SourceType = UIImagePickerControllerSourceType.PhotoLibrary;  
      popover.PresentFromRect(s.Frame, this.View, UIPopoverArrowDirection.Left, true);      
     }); 
    }