2017-03-01 35 views
0

我正在創建一個簡單的相機應用程序。爲什麼「picker.delegate =自我需要」?

在代碼中,UIImagePickerControllerclass是ViewControllerClass實例的委託。

但是爲什麼在這段代碼中需要「picker.delegate = self」?

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { 

    @IBAction func launchCamera(_ sender: UIBarButtonItem) { 

     let camera = UIImagePickerControllerSourceType.camera 

     if UIImagePickerController.isSourceTypeAvailable(camera) { 
      let picker = UIImagePickerController() 
      picker.sourceType = camera 
      picker.delegate = self 
      self.present(picker, animated: true) 
    } 
} 

     func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 

      let image = info[UIImagePickerControllerOriginalImage] as! UIImage 
      self.imageView.image = image 
      UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil) 
      self.dismiss(animated: true) 
     } 
+0

雅其manodatry之間,如果你想aceess委託,那麼你需要提'picker.delegate =自當前類 –

+0

@ risa8。當你設置「picker.delegate = self」。你的控制器是使用UIImagePickerControllerDelegate的所有委託方法。對您的控制器進行控制意味着授權轉移給您的控制器。 –

+0

是的,你必須 –

回答

0

UIImagePickerController的委託包括UIImagePickerControllerDelegate和UINavigationControllerDelegate。

UIImagePickerControllerDelegate漁獲用戶的行爲有關取照片選擇圖片。 UINavigationControllerDelegate的視圖控制器導航相冊和照片