web-dev-qa-db-fra.com

Signification d'avertissement "pendant qu'une présentation est en cours!"

Quand j'intègre le Instagram dans mon projet. Je reçois un image de UIImagePickerController et après je veux l'envoyer à Instagram Mais quand j'envoie image à Instagram par UIDocumentInteractionController méthode déléguée presentOptionsMenuFromRect:inView: animated: comme ça

[documentInteractionController presentOptionsMenuFromRect:CGRectZero inView:self.view animated:YES];

L'avertissement s'affiche Avertissement: tentative de présentation de <_UIDocumentActivityViewController: 0x7584780> pendant qu'une présentation est en cours!
L'application ne se bloque pas. Mais je ne reçois pas le problème. Pourquoi cet avertissement vient et ce que cela signifie. J'ai cherché sur Internet et lu des questions à ce sujet, mais je n'ai obtenu aucune réponse. Aidez moi !!

42
chakshu
// Breaks
[viewController1 dismissViewControllerAnimated:YES completion:NULL];
[self presentViewController:viewController2 animated:YES completion:NULL];

// Does not break
[viewController1 dismissViewControllerAnimated:YES completion:^{
    [self presentViewController:viewController2 animated:YES completion:NULL];
}];

La version Swift 3 du code ci-dessus ressemblerait à ceci:

// Breaks
viewController1.dismiss(animated: true)
present(viewController2, animated: true)

// Does not break
viewController1.dismiss(animated: true) {
    present(viewController2, animated: true)
}

Notez l'utilisation du gestionnaire d'achèvement dans le deuxième exemple ci-dessus.
Il ne présente que viewController2 après viewController1 a été entièrement rejeté.

134
John Erck

Pour ceux qui ont besoin/veulent la version Swift 3, la voici

viewController1.dismiss(animated: true, completion: {
    self.present(self.viewController1, animated: true)
})

viewController1 est le viewcontroller que vous souhaitez présenter.

3
Micah Montoya

Cela signifie que vous présentez ou supprimez UIImagePickerController et essayez de présenter UIDocumentInteractionController, alors que la première présentation ou le rejet n'est pas terminé.

3
Timur Mustafaev

Comme cela a été dit précédemment, cela signifie que vous essayez de présenter 2 fenêtres modales ou fenêtres contextuelles en même temps. Mais dans mon cas, je n'ai vu aucune fenêtre modale ou popover lorsque j'ai reçu ce message.

La raison de l'erreur dans mon cas était la suivante. Lorsque j'ai appelé le popover pour qu'il s'affiche pour la toute première fois, c'était une autre erreur qui empêchait le popover de s'afficher, mais il continuait en quelque sorte à être "présenté". Toutes les tentatives suivantes pour afficher le popover ont échoué avec une erreur d'exécution "alors qu'une présentation est en cours!".

Donc, si vous rencontrez la même situation, parcourez le journal et essayez de trouver la toute première erreur commençant par *** WebKit discarded an uncaught exception in the....

J'espère que cela fera gagner du temps à quelqu'un.

1
Mike Keskinov

j'ai reçu ce message car j'ai copié collé un bouton qui avait déjà envoyé un événement attaché et j'ai continué à créer une autre connexion car un nouveau bouton était censé ouvrir une nouvelle vue.

Donc, techniquement, j'essayais d'ouvrir 2 vues en même temps.

1
user2251695

Essayer..

    double delayInSeconds = 1.0;
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){

        [self performSegueWithIdentifier:@"Identifier" sender:self];

    });
1
Ar No

Cela signifie que vous présentez 2 ViewControllers en même temps. Appelez votre délégué une fois la première présentation terminée.

1
hayashi_leo

Cela peut également se produire si vous avez (disons) un UIButton connecté à une IBAction pour présenter un ViewController, et créez également un enchaînement dans le Storyboard à partir du bouton vers le ViewController cible.

Si cela s'était produit lorsque j'ai oublié de supprimer la connexion IBAction d'un bouton UIB lorsque j'ai déplacé certaines interactions.

La suppression de la connexion IBAction ou de la séquence le résoudra.

1
axol