10
votes

UINAVIGATIONCONTROLLER SETVIEWCONTROLLATEUR: Animation: Barre de navigation Difficultés

J'ai un problème incroyablement frustrant qui semble être un bogue, mais j'ai beaucoup de mal à croire que personne d'autre n'a rencontré cela. Le contrôleur de visualisation de la racine de mon application est un uitabbarcontroller, où chaque onglet est une commande UinavigationController. Tout fonctionne bien.

Maintenant, je suis venu dans un endroit où je veux éditer la pile, donc je réorganisez les visiteurs du contrôleur de navigation actuel, puis faites: p>

[self.navigationController popToViewController:someViewController animated:YES];


5 commentaires

Est-ce que ce bogue - Openradar.Appot.com/7470644 semble lié?


Oui! C'est exactement le même bug, mais cette solution est assez laide. Avez-vous trouvé une meilleure solution de contournement?


Je reçois aussi ce bogue. Très frustrant.


Cela a été déposé comme un bogue avec Apple


Je rencontre toujours cette question à compter d'aujourd'hui. Exemple, écran poussoir A, puis B et dans la vue ViewDiDload pour B DO: [Self.navigationController SetViewContrôleurs: @ [B] Animated: Non]; Pour une raison quelconque, le problème s'en va cependant si je cache la barre de navigation avant de pousser les écrans, puis de le savoir après (autoavigationController.navigationbarHidden = NO).


6 Réponses :


1
votes

deux travaux tout aussi laids.

premier, Si: P>

[self.navigationController popToViewController:someViewController animated:NO];


0 commentaires

0
votes

Vous pouvez également définir votre contrôleur de vue racine comme délégué de UinavigationController, comme: xxx pré>

, puis dans la méthode DidShowViewController, vous définissez manuellement les contrôleurs de vue disponibles: P>

-(void)navigationController:(UINavigationController*)navigationController didShowViewController:(UIViewController*)viewController animated:(BOOL)animated {
    [[viewController navigationController] setViewControllers:[[viewController navigationController] viewControllers]];
}


0 commentaires

2
votes

Apple semble avoir réparé cela dans le dernier SDK


1 commentaires

Avec xcode 9.0 aussi je suis confronté au même problème. Est-ce un bug?



-2
votes
[self.navigationController setViewControllers:newViewControllers animated:NO];
this may help you. 

0 commentaires

11
votes

J'ai fait face au même problème, il semble que Apple ne corrigeait pas ce bogue et que la réponse sélectionnée de ce thread semble être incorrecte. J'ai réussi à corriger ce problème en utilisant ce rapport de bogue comme dans le commentaire de Anurag associé au commentaire de Scott Pfeil .

Voici le code: xxx

i appelez ce code dans la fenêtre ViewDidLoad du CurrentController et ce que j'ai fait est remplacer les contrôleurs précédents avec seulement ViewController .

espère que cela aide.


2 commentaires

Réglage de la barre de navigation sur Caché, puis le montrant, résolu ceci pour moi.


Avec la bascule l'état caché de la barre de navigation avant et après SetViewControls (), je pouvais atténuer le même problème. Dans mon cas, cela vient d'arriver lors d'un «départ à froid» de l'application. (E.G. L'application a été tuée par l'utilisateur et l'utilisateur tapa de taper sur une notification push ultérieurement). La chose réellement câblée est que Apple mentionne ce cas d'utilisation exacte dans sa documentation: "Ce qui pourrait être approprié au moment du lancement lorsque vous souhaitez renvoyer le contrôleur de navigation à un état précédent." (Source: développeur.apple.com/documentation/uikit/uinavigationControll er / ... )



0
votes

Je suis toujours confronté à ce problème dans le xcode 9.4.1 & iOS 11.4 .

Le moyen le plus simple consiste à appeler loadvieweeded () < / Code> Pour tous les contrôleurs d'affichage précédents de la pile de navigation: xxx


0 commentaires