Le problème en question concerne un AddItemView
qui est présenté de manière modale par son délégué et contient une tableView. Lorsque l'utilisateur sélectionne un élément de tableView, il déclenche une action sur le délégué. En fonction de la réponse du serveur, le délégué peut présenter une autre vue modale ou une UIAlertView au-dessus du modal courant.Présente UIAlertView du délégué actuel du modal
Remarque importante: Cette UIAlertView doit être présentée lorsque le modal est toujours à l'écran. La vue modale présentée contenant tableView ne peut pas être ignorée après la sélection de l'utilisateur, car l'utilisateur doit pouvoir sélectionner plusieurs éléments de la table et, un par un, les renvoyer au délégué pour traitement.
Actuellement, l'UIAlerView n'est pas affiché et je suppose que c'est parce que le modal déjà présenté l'empêche. Existe-t-il une solution de contournement pour présenter le UIAlertView du délégué lorsque le délégué est assis sous un modal et sans rejeter ce modal?
Le UIAlertView est affiché comme tant par le délégué, tandis que le délégué est assis sous un modal:
var alert = UIAlertController(title: "Error", message: "Error message from server", preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "actionOne", style: .Default, handler: { action in
// perform some action
}))
alert.addAction(UIAlertAction(title: "actionTwo", style: .Destructive, handler: { action in
// perform some action
}))
self.presentViewController(alert, animated: true, completion: nil)
Voici l'erreur qui est renvoyée lorsque le UIAlertView est présenté par le délégué:
Warning: Attempt to present <UIAlertController: 0x156da6300> on <productionLINK_Scanner.ContainerContents: 0x156e65b20> whose view is not in the window hierarchy!
Si possible, veuillez fournir une réponse en utilisant Swift.
Où exactement dans la vie du contrôleur essayez-vous de présenter le contrôleur d'alerte? Il n'y a aucun problème à présenter un contrôleur au-dessus d'un autre. En outre, vous n'avez pas besoin de fermer le contrôleur d'alerte dans vos gestionnaires, il est automatiquement ignoré. –
@LeoNatan UIAlertView est présenté à partir du délégué lorsqu'un utilisateur sélectionne une ligne dans le tableauView de modal présenté. Il est important de noter que le tableauView présenté de façon modale (c'est en fait un tableauView intégré dans un UIView) doit rester à l'écran - il ne peut pas être ignoré car l'utilisateur doit pouvoir sélectionner plusieurs éléments de la table et renvoyer chacun au délégué. –