32 votes

SplitViewController pour iPad avec menu en mode portrait comme l'application Réglages

Je voudrais obtenir un SplitView sur mon application iPad avec mon menu de gauche dans une orientation portrait comme les réglages iPad. Pour l'instant en orientation portrait j'ai une vue du contenu en plein écran et j'ai un bouton dans la barre de navigation qui inclut un popover avec mon menu de gauche.

50voto

CornPuff Points 1444

C'est la magie dont vous avez besoin :

Cette méthode se trouve dans UISplitViewControllerDelegate, disponible sur iOS 5.0.

- (BOOL)splitViewController: (UISplitViewController*)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation  __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_5_0);
{
    return NO;
}

10 votes

Cette fonction est obsolète dans iOS 8. Utilisez la propriété "preferredDisplayMode" définie sur "UISplitViewControllerDisplayModeAllVisible" pour iOS 8 et les versions ultérieures.

11voto

samvermette Points 20225

Vous devriez vraiment jeter un coup d'oeil au livre de Matt Gemmell. MGSplitViewController .

MGSplitViewController est un programme ouvert de source pour remplacer UISplitViewController, avec de nombreuses améliorations utiles.

9voto

KennyTM Points 232647

Malheureusement, il s'agit d'une méthode non documentée (c'est-à-dire une API privée).

[splitViewController setHidesMasterViewInPortrait:NO];

Je pense que vous devez créer un contrôleur de vue personnalisé contenant une vue de table (comme contrôleur principal) et une autre sous-vue générique (comme contrôleur de détail) pour simuler ceci.

0 votes

API non documentée ou privée ? C'est une question importante quand on traite avec Apple ;-)

1 votes

@paull : Non documenté == Privé.

3 votes

Cependant, n'oubliez pas que, parfois, Apple "déprogramme" une option parce qu'elle veut être la seule à utiliser cet effet. Dans ce cas, ils refusent souvent les applications qui ne font que SIMULER des API privées avec des changements. C'est ce qui m'est arrivé lorsque je me suis "trop rapproché de l'aspect et de la convivialité" de la fonction "edit" du contrôleur de la barre d'onglets "MORE". Ils limitent les icônes que vous pouvez arranger à 16. J'ai essayé d'implémenter quelque chose qui y ressemblait... et ils m'ont refusé en disant que cela pourrait perturber les utilisateurs si la mienne fonctionnait de manière proche mais pas identique à la leur (c'est-à-dire que la mienne en faisait un peu plus... autorisée à plus de 16).

8voto

Kristopher Johnson Points 34554

Le moyen le plus simple d'obtenir l'effet désiré est peut-être de ne pas utiliser de UISplitView . Au lieu de cela, il suffit de créer une vue normale, de placer une vue en tableau sur son côté gauche, votre vue détaillée sur le côté droit, puis de régler l'autodimensionnement de manière appropriée afin que tout se présente correctement en portrait et en paysage.

4voto

anka Points 1499

Certaines personnes m'ont posé la même question sur notre blog et j'ai trouvé une solution pour cela. Vous la trouverez à la fin de mon article. Votre premier contrôleur à vue partagée | Seaside .

En général, tout ce que vous avez à faire est de créer une sous-classe de UISplitViewController et remplacer la méthode willAnimateRotationToInterfaceOrientation: duration: et ajustez vos vues principale et détaillée lorsque l'orientation de l'interface passera en mode portrait.

A la vôtre, Andreas

0 votes

Bonjour Anka, j'ai vu votre exemple de code source pour la vue des détails multiples, mais vous n'avez pas mis en œuvre la méthode didselect dans la vue Root ... pouvez-vous me donner un exemple pour cela aussi ...

0 votes

Bonjour, j'ai ajouté un exemple de code pour cela dans mon projet MasterDetail. Consultez le dépôt git à l'adresse github.com/anka/bw_examples/tree/master//MasterDetail . Merci, Andreas

0 votes

Ça semble prometteur, bonne idée BTW.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X