Détendez-vous Segue ne fonctionne pas sous iOS 8
J'ai une application, qui fonctionne très bien sous iOS 7, mais lorsqu'il construit pour iOS 8 le déroulement enchaîne sont pas de travail.
J'ai créé un nouveau projet et ajouter un modal (navigationcontroller avec tableviewcontroller)et essayé d'utiliser un dérouleur modal. Malheureusement, il ne fonctionne pas non plus. Les méthodes qui sont en train de se détendre, sont dans la desination-vue-contrôleur. Le déroulement des enchaînements est créé par le biais de la table de montage séquentiel (un Navigationbar bouton dans le tableviewcontroller) Quand j'appuie sur le bouton, rien ne se passe. Il n'y a pas de log de sortie et le modal ne disparaît pas. De plus, cela ne semble affecter modal enchaîne. push/liste sont déroulés normalement.
Quelqu'un a eu un problème similaire et a une Idée de comment je pourrais le résoudre?
Vous devez mettre à jour votre réponse à @Stewart Hou la, comme il est le seul qui répond spécifiquement à votre question. Il sera également aider d'autres personnes rencontrant le même problème de trouver la bonne réponse.
OriginalL'auteur viirus | 2014-09-03
Vous devez vous connecter pour publier un commentaire.
Pour Swift
CustomTabBarController.swift
De la vieille école Objective-C
CustomTabBarController.h
CustomTabBarController.m
Dernière mise à jour le 23 septembre
Ma nouvelle solution est de pousser à une vision embarqué dans une manette de navigation, et la config manette de navigation pour masquer la barre inférieure sur push(une case à cocher dans l'IB). Ensuite, vous aurez une vue ressemble à un modal de vue, la seule différence est la animer de pousser et de les faire éclater. Vous pouvez personnaliser si vous voulez
Mis à jour: La solution ci-dessous la modal vue en vertu de la barre d'onglet, ce qui causera plus de vue problèmes de mise en page.
Modifier la séquence type de Présente Comme Liste fonctionne uniquement sur les iOS8 pour iPhones, sur iOS7 votre application crash.
Même ici, pour résoudre ce problème, j'ai mis segue présentation contexte actuel(mon app pour iphone seulement).
Par défaut et le plein écran ne fonctionne pas.
Ce doit être la accepté de répondre.
Merci, c'est elle.
Bonjour à tous. Ma dernière et la plus grande correction: revenir à l'ancienne méthode du délégué! J'utilise la séquence pour ouvrir une liste ou une vue modal, et l'utilisation de la norme méthode du délégué à la rejeter. Tout retour à la normale!
Est-il possible que la 8.0 bug est de retour dans iOS 9? Mon détendez-vous segue (avec un tabbarcontroller) fonctionne très bien sur iOS 8.1, mais qui a cessé de travailler sur iOS 9...
OriginalL'auteur Stewart Hou
[Mise à JOUR: correction d'un Bug sur iOS 8.1 bêta, mais vous en aurez besoin pour la 8.0 et 8.0.2 support]
La seule façon que j'ai pu faire mon détendez-vous des enchaînements de travail était en mélangeant Aditya et viirus réponses.
Ma configuration, allez dans:
[View Controller 1] > la coutume modal segue > [Navigation Controller] > root > [- Vue-Contrôleur 2]
Détendez-vous:
[View Controller 2] > la coutume se détendre segue > [- Vue-Contrôleur 1]
Corrigé:
Sous-classe [Navigation Controller], ajouter une propriété appelée sourceViewController et de passer de "auto" à la propriété lors de la préparer pour la transition est appelée lorsqu'on passe de [View Controller 1] à [Navigation Controller]
Dans le bouton [Navigation Controller] sous-classe .m remplacer/ajouter ce deux méthodes:
Puis-je remplacer ce qu' [Navigation Controller] sous-classe seulement parce que j'ai une coutume de se détendre segue:
C'est maintenant la cause de la détendre fonction qui doit être appelée sur iOS 8, cependant, il n'est pas automatiquement rejeter le modal VC lorsque sur iOS 7, il n'. Si I du programme, de les rejeter ensuite sur iOS 7, je reçois un message enregistré: avertissement tentative de démettre de-vue-contrôleur alors qu'une présentation ou de les rejeter est en cours! Comment travaillez-vous autour de qui? Je ne veux pas avoir à détecter le système d'exploitation et si iOS 8 alors manuellement rejeter.
OriginalL'auteur Raul Rea
C'est un problème avec iOS 8.0, 8.0.1 et 8.0.2. Il a été résolu en 8.1, détendez-vous enchaîne sont l'appel de la méthode appropriée maintenant.
Noter que sur iOS 8, modal présenté afficher les contrôleurs ne peuvent pas être automatiquement rejetée lors de l'exécution d'un déroulement segue, contrairement à iOS 7. Pour s'assurer qu'il est toujours rejeté, vous pouvez détecter si c'est rejetée et si non, alors manuellement le rejeter. Ces incohérences sont résolues dans iOS 9.0.
Avec iOS 8.4 en cours d'exécution sur l'iPhone, tous les modal présenté enchaîne avec tous les styles de présentation ne rejeter à se détendre, à l'exception en Plein Écran et Sur Contexte Actuel. C'est aussi le cas pour l'iPad, avec l'ajout de la Forme de la Feuille et de la Page Fiche pas auto-licencier. Avec iOS 9, tous les styles de présentation de l'auto de rejeter à la fois l'iPhone et l'iPad.
Je ne suis pas positif si c'est voulu ou un autre bug @DavideDeFranceschi, je viens de le dire, le comportement, je vois et comment le faire fonctionner comme il le fait sur iOS 7.
C'est une excellente nouvelle que ce problème est résolu dans iOS 8.1!
En fait, détendez-vous enchaîne les beaux travaux, lors de la présentation d'une vue contrôleur modal avec un style de présentation "Actuel". Mais dès que vous choisissez un autre style de présentation, comme "la totalité de l'Écran" par exemple, puis le déroulement des enchaînements ne pas faire disparaître de la vue-contrôleur automatiquement. Vous devez ajouter dismissViewController:animation: dans le corps du déroulement des enchaînements.
OriginalL'auteur Jordan H
Yep ça m'arrive à moi aussi, je pense que dans votre cas vous avez de la sous-classe le UINavigationController et de remplacer les suivantes:
L'utilisation de cette fonction de la valeur liquidative du contrôleur j'espérais détendez-vous, j'ai pu voir que le Conteneur spécifique-Vue-Contrôleur, j'ai été en espérant pour vous détendre, n'a pas été appelé. Je pense que c'est le changement que nous voyons dans iOS 8 - enfant du conteneur affichage des contrôleurs ne sont pas inclus dans le déroulement de la hiérarchie des flux de
OriginalL'auteur Aditya Wirayudha
Même problème ici. Détendez-vous méthode n'est pas appelée. Ne se produit que lorsque
Se passe aussi dans IOS8 Semences GM, donc je pense que nous devons trouver une solution de contournement.
Sonne comme un bug pour moi...
L'extension de UINavigationController et la mise en œuvre de viewControllerForUnwindSegueAction n'aide pas, car il n'est pas déclenché. La seule chose qui est exclu est canPerformUnwindSegueAction() à l'intérieur de l'étendue UINavigationController. Étrange.
OriginalL'auteur Bertl
Woah! Je suis encore en train de l'utilisateur de rapports de rester bloqué sur un modal vue dans iOS 8.1.1 (sur un iPad 3).
Je suis en se débarrassant de tout ce déroulement d'un modal vue des choses. Juste un bon vieux...
...fonctionne très bien sur tous ces différents iOS 8.x.x versions.
OriginalL'auteur Paul Brady
Il semble que les deux iOS 7.1 et iOS 8.1/8.2 créer détendez-vous des enchaînements de navigation controller toutefois se détendre segue est enregistré sur un contrôleur enfant à l'intérieur de la manette de navigation.
Afin de créer manuellement une détendez-vous enchaîner à partir du contrôleur où il est enregistré dans le storyboard permet de résoudre le problème.
OriginalL'auteur highmaintenance
J'ai rencontré le même problème lors du déroulement d'une vue de source de contrôleur à partir d'une destination-vue-contrôleur. La destination a été présentée par l'intermédiaire d'un "spectacle" segue à partir de la source.
J'ai été en utilisant le simulateur d'iPhone, qui montre que l'iPhone 6, iOS8.3.
XCode 6.3.2
La solution de sous-classement NavigationViewController a fonctionné pour moi. Voici le code swift qui est essentiellement swift traduction de Raul réponse. Je suis intrigué par le fait que si Apple a corrigé dans iOS8.1 par Raul, comment suis-je touché par il en 8.3.
OriginalL'auteur Jitendra Kulkarni
Je viens de tomber sur ce problème, et après quelques recherches découvert qu'avec modal enchaîne (au moins avec la valeur par défaut et plein de modes de présentation), vous ne pouvez pas compter sur l'état normal de se détendre mécanisme, mais plutôt que vous devez appeler l'présenté UIViewController de dismissViewControllerAnimated méthode.
OriginalL'auteur user3483058
Les étapes à suivre:
Créer IBAction pour le bouton et ajoutez le code ci-dessous:
Cela devrait fonctionner pour toutes les versions.
OriginalL'auteur Sai Apps