7
votes

Présenter une autre vue modale de UiImagePickerController

Je veux ajouter une vue de confirmation une fois que l'utilisateur prend une photo ou sélectionne une photo enregistrée. La vue de confirmation indiquera simplement l'image sélectionnée, avec un bouton Annuler et télécharger dans une barre d'outils.

My UiImagePickerController est présenté model de l'un de mes contrôleurs de vue, contrôlé par un contrôleur de navigation, qui est à son tour contrôlé par un Contrôleur de barre d'onglets. P>

Comment puis-je présenter ma vue de confirmation de manière moderne de manière à ce qu'il occupe l'écran complet (comme la vue de sélecteur d'images) lorsque l'utilisateur sélectionne une photo? Idéalement, je veux quelque chose comme ceci: p> xxx pré>

Cependant, cela bloque l'application. Devrais-je présenter la vue de confirmation de manière moderne du cueilleur? Si oui, comment puis-je vous assurer que lorsque la vue de confirmation est rejetée, le sélecteur ne sera pas affiché non plus? P>

EDIT: P>

Correction du bogue dans le code que j'ai publié. C'est ce qui se passe lorsque j'essaie de taper de la mémoire au lieu de copier + Coller :( de toute façon, les suggestions jusqu'à présent ne vous aide pas. P>

Si je présente le contrôleur modal, je n'ai pas rejeté le sélecteur, rien n'arrive, vraisemblablement Étant donné que les deux contrôleurs sont ensuite licenciés. P>

Si je renvoie le sélecteur, présentez le contrôleur modal, je reçois une exception sur les transitions modales: P>

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Attempting to begin a modal transition from <UINavigationController: 0x6b33940> to <UIViewController: 0x6b62b00> while a transition is already in progress. Wait for viewDidAppear/viewDidDisappear to know the current transition has completed'


0 commentaires

5 Réponses :


0
votes

Vous publiez modal avant de le présenter. Essayez ceci: xxx


2 commentaires

Je pense que vous devez également rejeter le cueilleur avant de présenter la nouvelle vue modale.


Aucune de ces suggestions ne aide. La sortie était juste un bogue dans le code que j'ai tapé, mais ce n'était pas dans le code d'origine. Rejeter le sélecteur avant de présenter les résultats de la vue modale dans une exception. Voir mes modifications.



0
votes

ah. On dirait que vous ne pouvez pas présenter et rejeter un contrôleur d'affichage modal dans la même méthode.

Vous pouvez utiliser une propriété (pour vous aider avec la gestion de la mémoire) pour stocker le dictionnaire Info et un ivar pour stocker quelque chose comme "DisSelectimage". Ensuite, dans la vue ViewDididappear: de votre contrôleur d'affichage, si DisSelectImage == Oui, présentez votre contrôleur d'affichage de manière moderne à l'aide des détails du dictionnaire Info.

Assurez-vous de réinitialiser DidSelItimage de NO et définissez la propriété Info Dictionary en Nil une fois qu'ils ne sont plus nécessaires.


0 commentaires

3
votes

a trouvé la solution. En effet, le sélecteur doit être rejeté et l'astuce consiste à transformer des animations pour ce licenciement afin qu'il arrive immédiatement, puis présente la deuxième vue modale.

EDIT: En fait, cela me donne presque à ce que je veux. Lorsque vous renvoyez le sélecteur, la vue d'origine est montrée pour une fraction de seconde, puis la vue modale est animée. Cela a l'air un peu funky.

J'ai aussi essayé de garder le sélecteur autour et non de le rejeter. Au lieu de cela, j'appelle [Picker PresentModalViewController: Modal Animated: Oui] . Cela me permet de transition en douceur du cueilleur à la vue de confirmation. Cependant, lorsque j'aurai fini avec la vue de confirmation, j'ai besoin d'appeler [auto-renvoyéViewControléranimated: oui] à partir du contrôleur d'origine. Cela a pour effet de montrer d'abord le sélecteur d'image avant de tout rejeter. Encore une fois, pas tout ce que je veux.

Idéalement, je veux le même effet que l'application iPhone Facebook utilise pour télécharger des photos. Une fois que vous avez sélectionné une photo, elle transitions de manière transparente à une vue de confirmation. L'annulation ou la confirmation de cette vue passeront en douceur de la vue principale d'origine. Il semble que la vue de confirmation fait partie du sélecteur d'images, quand il s'agit probablement d'une autre vue personnalisée.

Comment puis-je faire cela ??


0 commentaires

1
votes

Essayez ceci ... XXX


0 commentaires

0
votes

Ceci a fonctionné pour moi:

[myViewControllerA presentModalViewController:myViewControllerB];
//... let myViewControllerB do its job
[myViewControllerB presentModalViewController:myViewControllerC];
//... let myViewControllerC do its job
[myViewControllerA dismissModalViewControllerAnimated:YES];


0 commentaires