Mengapa perpustakaan foto tidak ditampilkan saat saya memilihnya dengan cepat?
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 viewDidLoad
seperti 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 viewDidAppear
tetapi gagal juga. Tidak ada kesalahan yang muncul, itu hanya menyembunyikan peringatan dan menunjukkan pengontrol tampilan saat ini.
Jawaban
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 showAlert
peringatan untuk menampilkan alat pilih gambar. Dengan begitu, peringatan ditutup dan pemilih gambar terbuka.