Swift ImagePicker - контроллер представления - PullRequest
0 голосов
/ 20 июня 2020

Что случилось,

Итак, это мой код для выбора изображения из библиотеки фотографий, теперь я хочу go отправить пользователя следующему контроллеру представления, но только после того, как пользователь выберет изображение. мой вопрос:

Как мне сделать это go для следующего контроллера представления, но только после того, как изображение было выбрано из библиотеки фотографий?

Сделав это так, чтобы * Кнопка 1013 * отображается только после того, как пользователь выбрал изображение или просто показывает ошибку, если он пытается нажать кнопку «Готово», пока изображение не будет выбрано из библиотеки.

Спасибо !!!!


override func viewDidLoad() {
        super.viewDidLoad()
        
        // Do any additional setup after loading the view.            
        
              let imageTap = UITapGestureRecognizer(target: self, action: #selector(openImagePicker))
                       ProfilePictureImageView.isUserInteractionEnabled = true
                       ProfilePictureImageView.addGestureRecognizer(imageTap)
                       ProfilePictureImageView.layer.cornerRadius = ProfilePictureImageView.bounds.height / 2
                       ProfilePictureImageView.clipsToBounds = true
                       TapToChangeButton.addTarget(self, action: #selector(openImagePicker), for: .touchUpInside)
                       
                       //when user clicks they can choose a photo from library
                       //instantiate image picker
                       ImagePicker = UIImagePickerController()
                       ImagePicker.allowsEditing = true
                       ImagePicker.sourceType = .photoLibrary
                       ImagePicker.delegate = self
                       
                   
                     setUpElements()
                    }
                     
                    func setUpElements() {
    
                    ErrorLabel.alpha = 0
                    }
    
                   // taping to change and add a photo
                   @objc func openImagePicker(_ sender:Any) {
                       // Open Image Picker
                       self.present(ImagePicker, animated: true, completion: nil)
                   }
                
                   @IBAction func FinishTapped(_ sender: Any) {
                   }
                   
                   
               }
               //extend the proper delagate method
               extension BackroundCheckViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {
                   //cancel
                   func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
                       picker.dismiss(animated: true, completion: nil)
                       
                   }
                   //pick an image
                   func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
                       
                       //get the image the selected
                       if let pickedImage = info[UIImagePickerController.InfoKey.editedImage] as? UIImage {
                           
                           self.ProfilePictureImageView.image = pickedImage
                        
                        //upload to firbase
                        PhotoService.savePhoto(image: pickedImage)
                        
                       }
                       picker.dismiss(animated: true, completion: nil)
                                           
                       }
                                
                     }

1 Ответ

0 голосов
/ 20 июня 2020

Добавьте код для перехода к другому контроллеру представления в блоке завершения удаления средства выбора в didFinishPickingMediaWithInfo методе UIImagePickerControllerDelegate.

extension BackroundCheckViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {
    //pick an image
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        //...
        picker.dismiss(animated: true) {
            // add you code here to navigate to somewhere else.
            let myViewController = MyViewController()
            if let navigationController = self.navigationController {
                navigationController.pushViewController(myViewController, animated: true)
            } else {
                self.present(myViewController, animated: true)
            }
        }
    }
}
...