Avoir un UINavigationController dans la vue principale d'un UISplitViewController dans iOS 8
Dans mon UISplitViewController, le maître de la vue est un UINavigationController contenant un UITableViewController. Parfois, lorsque l'utilisateur sélectionne un élément dans le tableau, je dois pousser un autre tableViewController sur la table dans la vue principale.
Dans iOS 7, à l'intérieur de mon premier UITableViewController je viens de l'appeler
[self.navigationController pushViewController:otherTableVC animated:YES];
Dans iOS 8:
Lorsque le mode split est effondrée, la otherTableVC devient la Vue de détail!
Puis, après la rotation de l'appareil, nous voyons les deux tables côte à côte...
Pire, si l'appareil indique le deux volets, le code fonctionne très bien et la seconde table est poussé au-delà de la première dans la vue principale. Mais, après une double rotation, les deux tableaux sont de nouveau côte à côte. Il semble que le mode réduit de la UISplitViewController interfère avec mon propre manette de navigation...
Comment puis-je gérer mon propre UINavigationController dans la Vue principale?
Merci
ÉDITÉ:
Mon primaire et détails les points de vue ont une manette de navigation. Et pour résoudre mon problème, je viens de découvrir que, en mode réduit, je dois créer un supplément de manette de Navigation et de le pousser sur la navigation principale du contrôleur.
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:otherTableVC];
[self.navigationController pushViewController:navController animated:YES];
Donc, je viens de découvrir hat on peut pousser une manette de navigation à l'intérieur d'une manette de Navigation.
OriginalL'auteur PatrickV | 2014-09-26
Vous devez vous connecter pour publier un commentaire.
Réponse courte, vous pouvez contrôler ce comportement via la UISplitViewControllerDelegate méthodes:
Je soupçonne vraiment ce que vous voulez faire est de faire face avec la situation où vous avez une version d'iOS 8 UISplitViewController application basée sur l'endroit où votre principal et des vues détaillées sont à la fois UINavigationControllers et il y a quelques viewControllers (à l'intérieur de ces manettes de navigation) que vous souhaitez voir apparaître seulement sur le primaire ou le niveau de détail du côté de l'affichage fractionné. La réponse ci-dessous traite de cette. Il a également fait face avec la situation où vous le souhaitez pour une vue de remplacer les points de vue dans le Détail de la manette de navigation, plutôt que d'arriver à la poussée.
Une petite mise en garde: le code ci-dessous ne traite pas tous les cas possibles et a quelques hypothèses:
Je ne recommande pas la mise en œuvre d'un seul côté de la splitViewController:collapseSecondaryViewController:ontoPrimaryViewController: /splitViewController: separateSecondaryViewControllerFromprimaryviewcontroller: logique et en fonction de l'implémentation par défaut de l'autre côté. Apple faire des choses étranges comme de mettre la UINavigationViewController dans le Détail de côté dans les du côté primaire, comme l'un des viewControllers dans la navigation Principale du contrôleur de pile mais alors, poussant d'autres contrôleurs de vue au-dessus d'elle, même si vous comprenez complètement immobile ne peuvent pas être répliquées à partir de votre propre code. Donc de son mieux pour gérer les deux côtés du processus vous-même.
C'est ce que j'utilise:
J'ai sauvé ma peau. J'ai eu du mal avec iOS 9 et la fonction multitâche. Spécifiant manuellement toutes ces choses vraiment aidé!
Je suis aussi aux prises avec le même problème. Peut-on de vous téléchargez un petit projet avec mentionné le programme d'installation. J'ai essayé de convertir rapidement et si j'ai mis shouldDisplayInDetailedView dans ma vue de détail du contrôleur, que j'ai obtenu en Poussant une manette de navigation n'est pas pris en charge".
est-il un Swift version?
OriginalL'auteur Michael Wybrow
Swift 4 Version avec des modifications mineures à la faire fonctionner avec mon code:
OriginalL'auteur funkenstrahlen