Dlaczego biblioteka zdjęć nie jest wyświetlana, gdy wybieram ją w trybie Swift?
Korzystając z tego pytania proszę użytkownika, aby zdecydował, czy chce skorzystać z aparatu, czy wybrać obraz z telefonu:
//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)
}
Które w ten sposób wzywam viewDidLoad
:
override func viewDidLoad() {
super.viewDidLoad()
firstTextField.delegate = self
showAlert()
present(imagePicker, animated: true, completion: nil)
imagePicker.delegate = self
firstImageView.layer.cornerRadius = 8
}
Jednak kiedy to testuję, pojawia się alert i wybieram bibliotekę zdjęć, ale biblioteka się nie pojawia. Próbowałem użyć, viewDidAppear
ale to również nie zadziałało. Nie pojawiają się żadne błędy, po prostu ukrywa alert i pokazuje aktualny kontroler widoku.
Odpowiedzi
Możesz sobie wyobrazić, że kod zatrzymuje się, gdy pojawia się alert. Ale tak nie jest! Nie można jednocześnie wyświetlać dwóch kontrolerów widoku prezentowanego. Ale to właśnie próbujesz zrobić.
Mówisz showAlert()
, więc teraz twój alert jest włączony, a potem natychmiast present(imagePicker)
mówisz, czego nie możesz zrobić, ponieważ twój alert wciąż jest włączony.
Użyj programów obsługi akcji showAlert
alertu, aby przedstawić próbnik obrazu. W ten sposób alert zostanie zamknięty, a selektor obrazów zostanie otwarty.