9
votes

UisplitViewController Méthodes de déléguement non appelées

J'utilise un UisplitViewController à l'intérieur d'un uitabbarcontroller avec un clair uiviewcontroller dans le volet maître de la vue split et un uinavigationController dans le volet détaillé, qui contient lui-même une vanille uiviewcontroller .

Je suis conscient que Apple conseille d'utiliser des vues scindées uniquement au niveau de la racine, mais j'ai vu d'autres applications (par exemple , Onglet Amazon- 'Liste de souhaits') qui utilise des vues scindées dans les onglets, donc je suis sûr qu'il est possible.

Mon problème est que les méthodes de délégation de la vue scindée, c'est-à-dire. Ceux dans UisplitViewControllerdelegate Ne pas appeler, ce qui m'empêche de créer mon menu contextuel lors de la mise sous tension en mode portrait.

Les méthodes en question sont les suivantes: xxx

le uisplitviewcontroller est recevoir les notifications de rotation.

Je peux obtenir le willshowviewonController Méthode à appeler si je force l'orientation de la barre d'état à la droite du paysage (ou à gauche) au début du lancement de l'application, à l'aide de xxx

Cependant, le WillhideviewController ne s'appelle pas. Et je ne veux pas forcer l'application pour commencer dans le paysage. Si je fais la même chose mais forcez-le au portrait, je ne reçois pas les rappels.

Je ne comprends pas pourquoi le contrôleur de visualisation de Split n'appelle pas ses méthodes de déléguement lorsqu'il se comporte régulièrement correctement. Ces méthodes doivent être appelées à partir de sa méthode - xxx

interne, et lorsque je parseme à l'intérieur de cela, je peux vérifier que le délégué est défini et qu'il est toujours vivant.

été coincé sur cette journée! Tout le reste travaille bien et je suis très heureux que la combinaison SplitView / Tabbar / Navbar fonctionne bien. J'ai juste besoin de ces notifications.

Devrais-je peut-être juste les appeler manuellement quand je tourne? Semble très faux lorsque le `UisplitViewController 'devrait faire cela.


0 commentaires

3 Réponses :


6
votes

Résolu, il doit être au niveau de la racine ou à une sous-sousview direct d'une barre d'onglets qui doit également être au niveau de la racine. Ennuyeux!


6 commentaires

Bonjour, voudriez-vous élaborer votre solution un peu plus loin? J'ai une sorte de même problème maintenant. J'ai reçu 1 TabController Wich a une vision de Splity dans 3 onglets. J'ai ajouté le DétailView dans chaque SplitView à une carte de navigation sous-classée. Cela fonctionne parfaitement pour l'onglet actuellement visible mais pas pour les autres. Donc, lorsque je fais pivoter ma vue et modifier l'onglet, il a l'air de fumer, jusqu'à ce que je le presse. Encore une fois, alors seulement pour la vue visible.


hmm désolé je ne suis pas sûr .. Je suis sûr que j'ai vu un message ici quelque part qui a indiqué que changer entre les onglets SplitView et la rotation des problèmes causés, et que le splitviwe devrait toujours être au niveau de la fenêtre, même pas sous une seule onglet. manette. Qui est sauvegardé par les docs, je suppose. Je prends en fait la voie de la construction de ma propre division de la vue de zéro comme je demande des scissions horizontales


Au lieu d'essayer de gratter, essayez ceci - MattgemMell.com/2010/07/31 / mgsplitViewController-for-ipad


pas une option en raison de la licence. J'ai fini par faire le mien, était facile et fonctionnait bien


hey sam pouvez-vous partager le code de l'échantillon, comment avez-vous résolu cela, je suis Kinna avec ce


Pour élaborer la réponse de @ Sam: vous devez configurer le UisplitViewController et implémenter UisplitViewControllerdélégate dans votre uitabbarcontroller ou un contrôleur de vue de niveau racine similaire. Cela ne fonctionnera pas si vous mettez en œuvre le délégué dans une autre VC. C'est le genre de BS qui me rend très ennuyé contre Apple.



3
votes

Tout d'abord, essayez de voir si vous définissez les bons délégués. Par exemple, disons que vous avez créé trois contrôleurs,

splitView.delegate = detailView;


0 commentaires

2
votes

J'aime la méthode suivante d'envoi d'un message à partir du maître UIViewController au détail UIViewController. Quelque part dans la mise en œuvre de la maîtrise:

id detailViewController = [[self.splitViewController viewControllers] lastObject];
[detailViewController setSomeProperty:…];


1 commentaires

J'aime beaucoup votre idée parce que c'est une pensée en dehors de la boîte.