2015-11-19 5 views
1

У меня есть изображение профиля, которое также действует как кнопка, когда человек нажимает на картинку, на которой появляется селектор изображений, и они могут выбрать изображение, которое они хотят использовать в качестве изображения своего профиля, но imagePickerController не вызывается, и файл изображения Parse db не вызывается. Почему это происходит, как я могу это исправить?imagePickerController delegate not called, Swift

class ProfileView: UIViewController, UIImagePickerControllerDelegate { 
func userchange(sender: AnyObject){ 
    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.SavedPhotosAlbum){ 
     // imagePicker.delegate = self 
     imagePicker.allowsEditing = false 
     imagePicker.sourceType = .PhotoLibrary 
     presentViewController(imagePicker, animated: true, completion: nil) 

    } 
} 

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 
    if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage { 

     let user = PFUser.currentUser() 
     let image = info[UIImagePickerControllerOriginalImage] as! UIImage 
     let imageData = UIImageJPEGRepresentation(image, 0.05) 
     let imageFile = PFFile(name:"image.jpg", data:imageData!) 
     user!["ProPic"] = imageFile; 
     imageFile.save() 
     //NOTHING IS BEING PRINTED 
     print("called") 
     user!.saveInBackgroundWithBlock(nil) 


     self.dismissViewControllerAnimated(true, completion: nil) 

    } 
    } 
} 
+0

проверить, что вы добавили 'UIImagePickerControllerDelegate' в классе –

+0

Да он добавляется. – coolmac

+0

// imagePicker.delegate = self Почему комментируется? –

ответ

4

в swift 2.0 и далее, если вы используете какие-либо делегатов, например UIImagePickerControllerDelegate, необходимо обязательному реализации методов делегата, еще не использовать или вы не добавляете в вашем ViewController, это понятие, теперь следовать этому некоторые примеры

Шаг-1

добавить UIImagePickerControllerDelegate, UINavigationControllerDelegate в ваш взгляд контроллер

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { 

@IBOutlet var imageView: UIImageView! 

let imagePicker = UIImagePickerController() 

Шаг-2

override func viewDidLoad() { 
super.viewDidLoad() 

imagePicker.delegate = self // Its Manotary 
} 

Шаг-3

// Present the Image picker controller 

@IBAction func loadImageButtonTapped(sender: UIButton) { 
imagePicker.allowsEditing = false 
imagePicker.sourceType = .PhotoLibrary 

presentViewController(imagePicker, animated: true, completion: nil) 
} 

Шаг-4

// call the delegate method for pick the image 

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) { 
if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage { 
    imageView.contentMode = .ScaleAspectFit 
    imageView.image = pickedImage 
} 

dismissViewControllerAnimated(true, completion: nil) 
} 

Шаг 5

// finally dismiss the Imagepicker controller 

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