2016-03-17 1 views
4

Надеюсь, у вас все хорошо. Спрашивает, если кто-нибудь может помочь мне понять, почему Xcode не может играть хорошо со мной ....UIImagePickerController: didFinishPickingMediaWithInfo не называется

я сломала код на разделы ниже, чтобы позволить мне выбрать аватару из UIImagePicker:

  1. КОМБИНАТ: Назначение класса делегата для обоих ImagePicker & NavigationController
  2. КОМБИНАТ: Инстанцирование значение переменной UIImagePicker
  3. РАБОТУ: Load ImagePickerViewController и позволяет выбрать изображение
  4. FAILS: Добавлено дополнитель onal функции для закрытия и завершения выбора с UIImagePicker, но ни разу не вызвали? Что я сделал не так?

Заранее благодарен!


class ProfileVC: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { 
var imagePicker: UIImagePickerController! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    imagePicker = UIImagePickerController() 
    imagePicker.delegate = self 
} 

@IBAction func selectPhotoPressed(sender: UITapGestureRecognizer) { 
    if UIImagePickerController.isSourceTypeAvailable(.PhotoLibrary) { 
     self.imagePicker.sourceType = .PhotoLibrary 
    } else { 
     self.imagePicker.sourceType = .Camera 
    } 
    imagePicker.allowsEditing = true 
    imagePicker.mediaTypes = [kUTTypeImage as String] 
    self.presentViewController(imagePicker, animated: true, completion: nil) 
} 

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

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo image: UIImage, editingInfo: [String : AnyObject]?) { 
    headerView.profilePhoto.contentMode = .ScaleAspectFill 
    headerView.profilePhoto.image = image 
    imagePicker.dismissViewControllerAnimated(true, completion: nil) 
    uploadImage(image) 
} 

ответ

1

У вас есть подпись неправильно, но так как это дополнительный метод, вы не получаете предупреждала. Оно должно быть:

func imagePickerController(picker: UIImagePickerController, 
      didFinishPickingMediaWithInfo info: [String : AnyObject]) { 
    // Your code 
} 
+0

ОК здорово, но если это так, как бы я идти о применении изображение UIImagePicker моей UIImageView? Спасибо за быстрый ответ! –

4

OK Я, кажется, он работает сейчас, спасибо за вашу помощь в определении, что код был древний;) Вот что теперь работает:

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 
    let image = info[UIImagePickerControllerOriginalImage] as? UIImage 
    headerView.profilePhoto.contentMode = .ScaleAspectFit 
    headerView.profilePhoto.image = image 
    imagePicker.dismissViewControllerAnimated(true, completion: nil) 
    uploadImage(image!) 
} 
+1

Рад, что у вас это работает. Я также обновляю свой ответ, потому что заметил, что у меня тоже есть подпись (это правильно в твоей). – Michael

+0

Стоит отметить, что 'UIImagePickerControllerOriginalImage' будет, как говорится, получить исходное изображение, не считая каких-либо изменений или модификаций, которые пользователь мог сделать. Для этого вы должны использовать 'UIImagePickerControllerEditedImage'. –

0

Как все предложили, использовать метод didfinishpickingmediawithinfo и извлекать изображения в быстром 3, Иос 10, используйте информационный словарь

func imagePickerController(picker: UIImagePickerController, 
      didFinishPickingMediaWithInfo info: [String : AnyObject]) 
{ 
    imageView.image = info[UIImagePickerControllerOriginalImage] as? UIImage 
}