J'ai un tabBarController et dans l'un des onglets est une vue appelée view2. Dans view2, du code s'exécute dans viewWillAppear. J'ai aussi un UIImagePickerController dans view2.Swift iOS -In ViewWIllAppear Comment vérifier si ImagePicker est présenté ou rejeté pendant la permutation d'onglets ou si la vue est activée/désactivée?
fileprivate var imagePicker = UIImagePickerController()
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
runSomeCode()
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let image = info[UIImagePickerControllerOriginalImage] as? UIImage{
imageView.image = image
imagePicker.dismiss(animated: true, completion: nil)
}
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
imagePicker.dismiss(animated: true, completion: nil)
}
Je me rends compte que chaque fois que le imagePicker est rejeté ensuite présenté puis à l'intérieur viewWillAppear runSomeCode() fonctionne. Je ne veux pas que ça continue d'être appelé. J'ai d'abord utilisé ce code ci-dessous mais j'ai réalisé que le code dans viewWillAppear ne s'exécute que si le view2 est activé. Si je change d'onglet et reviens, il ne fonctionnera pas.
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if (isMovingToParentViewController) || (isBeingPresented){
runSomeCode()
}else{
//runs when switching tabs but also runs after the imagePicker is dismissed
}
}
Comment puis-je vérifier si le imagePicker est présenté ou rejeté pour que mon code viewWillAppear ne fonctionne pas?
Vérifiez cette réponse à une question similaire. https://stackoverflow.com/a/31686885/50255 –
@ChrisAllwein Merci :) Pourquoi ne pas vous référer à ce lien comme la réponse acceptée afin que je puisse vous mettre à jour! C'est exactement ce que je cherchais –