2016-04-29 4 views
5

Мне нужно сделать представление, которое работает как страницы works like pages, с всплывающим окном, в котором я могу выбрать, выбрать фотографию из своей библиотеки или создать новую.Включить UIImagePickerController в представлении

В настоящее время у меня есть ViewController, представленный как Popover. В ViewController я вставил ContainerView, и я объявил, что его классом является UIImageViewController. Это показывает мне библиотеку фотографий, но я не нашел, как выбрать что-либо в: My ViewController presented as Popover.

Когда я выбираю фотографию, ничего не происходит. Я попытался поместить некоторые функции

(func imagePickerController(picker: UIImagePickerController!, didFinishPickingImage image: UIImage!, editingInfo: NSDictionary!)) 

в мой ViewController, но он не работает. Я читал, что UIImagePickerController не поддерживает подклассирование, так как страницы делают это?

Вот мой ViewController код:

import UIKit 

class MenuAddResources: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { 

    var newMedia: Bool? 
    let imagePicker = UIImagePickerController() 

    @IBAction func takePhoto(sender: AnyObject) { 
      if(UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera)){ 
      //load the camera interface 
      let picker : UIImagePickerController = UIImagePickerController() 
      picker.sourceType = UIImagePickerControllerSourceType.Camera 
      picker.delegate = self 
      picker.allowsEditing = false 
      self.presentViewController(picker, animated: true, completion: nil) 
      self.newMedia = true 
     } 
     else{ 
      //no camera available 
      let alert = UIAlertController(title: NSLocalizedString("ERROR", comment: ""), message: NSLocalizedString("NO_CAMERA", comment: ""), preferredStyle: .Alert) 
      alert.addAction(UIAlertAction(title: NSLocalizedString("OK", comment: ""), style: .Default, handler: {(alertAction)in 
      alert.dismissViewControllerAnimated(true, completion: nil) 
     })) 
      self.presentViewController(alert, animated: true, completion: nil) 
     } 
    } 
    override func viewDidLoad() { 
     super.viewDidLoad() 

    } 

    func image(image: UIImage, didFinishSavingWithError error: NSErrorPointer, contextInfo:UnsafePointer<Void>) { 
     if error != nil { 
      let alert = UIAlertController(title: NSLocalizedString("ERROR", comment: ""), message: NSLocalizedString("IMAGE_SAVE_FAILED", comment: ""), preferredStyle: UIAlertControllerStyle.Alert) 

      let cancelAction = UIAlertAction(title: NSLocalizedString("OK", comment: ""), style: .Cancel, handler: nil) 

      alert.addAction(cancelAction) 
      self.presentViewController(alert, animated: true, completion: nil) 
     } 
    } 

    func imagePickerController(picker: UIImagePickerController!, didFinishPickingImage image: UIImage!, editingInfo: NSDictionary!){ 
     self.dismissViewControllerAnimated(true, completion: {() -> Void in 
     }) 

     // Let's store the image 
     let now:Int = Int(NSDate().timeIntervalSince1970) 
     let imageData = UIImageJPEGRepresentation(image, 85) 
     //imageData?.writeToFile(documentsDirectory + "/\(now).jpg", atomically: true) 
     print(imageData) 

     /* will do stuff with the image */ 
    } 

    func imagePickerControllerDidCancel(picker: UIImagePickerController) { 
     self.dismissViewControllerAnimated(true, completion: nil) 
    } 

} 
+0

пожалуйста поделитесь соответствующим кодом и – Shubhank

+0

Я редактировал. Что-то очень странное, если я не ставил строку «let imagePicker = UIImagePickerController()», сборщик не отображается ... –

+0

_Когда я выбираю фотографию, ничего не происходит. Я попытался поместить некоторые функции. поэтому вы хотите сказать, что UIImagePicker приходит, но вы не можете выбрать любую фотографию из него? – Shubhank

ответ

2

Похоже, вы используете UIImagePickerViewController через вид на контейнера и, следовательно, набор делегата Isnt, таким образом, нет обратных вызовов для получения изображения, не выбрал методы.

Чтобы исправить это, необходимо переопределить prepareForSegue в классе и в том, что бросил segue.destinationViewController вашего подборщик и установите его delegate в self

Смежные вопросы