Mengapa perpustakaan foto tidak ditampilkan saat saya memilihnya dengan cepat?

Dec 09 2020

Dengan menggunakan pertanyaan ini , saya meminta pengguna untuk memutuskan apakah mereka ingin menggunakan kamera atau memilih gambar dari ponsel mereka:

//Show alert to select the media source type.
    private func showAlert() {

        let alert = UIAlertController(title: "Image Selection", message: "From where you want to pick this image?", preferredStyle: .actionSheet)
        alert.addAction(UIAlertAction(title: "Camera", style: .default, handler: {(action: UIAlertAction) in
            self.imagePicker.sourceType = .camera
        }))
        alert.addAction(UIAlertAction(title: "Photo Album", style: .default, handler: {(action: UIAlertAction) in
            self.imagePicker.sourceType = .photoLibrary
        }))
        alert.addAction(UIAlertAction(title: "Cancel", style: .destructive, handler: nil))
            self.present(alert, animated: true, completion: nil)
    }

Yang saya anggap viewDidLoadseperti itu:

override func viewDidLoad() {
        super.viewDidLoad()
        firstTextField.delegate = self
        showAlert()
        present(imagePicker, animated: true, completion: nil)
        imagePicker.delegate = self
        firstImageView.layer.cornerRadius = 8
        
    }

Namun ketika saya mengujinya, peringatan itu muncul dan saya memilih perpustakaan foto, tetapi perpustakaan itu tidak muncul. Saya telah mencoba menggunakan viewDidAppeartetapi gagal juga. Tidak ada kesalahan yang muncul, itu hanya menyembunyikan peringatan dan menunjukkan pengontrol tampilan saat ini.

Jawaban

1 matt Dec 09 2020 at 00:00

Anda mungkin membayangkan bahwa kode berhenti ketika peringatan muncul. Tapi ternyata tidak! Dan Anda tidak dapat menampilkan dua pengontrol tampilan yang disajikan secara bersamaan. Tapi itulah yang coba Anda lakukan.

Anda mengatakan showAlert(), jadi sekarang peringatan Anda sudah habis, dan kemudian Anda segera mengatakan present(imagePicker), yang tidak dapat Anda lakukan karena peringatan Anda masih aktif.

Gunakan penangan tindakan showAlertperingatan untuk menampilkan alat pilih gambar. Dengan begitu, peringatan ditutup dan pemilih gambar terbuka.