11
votes

UisplitViewController pas en tant que contrôleur de RootView

Je construis ma première application iPad. Et une de mes exigences est de traiter avec UisplitViewController et UinavigationController.
Notre hiérarchie de vue proposée est


(LOGINVIEW) -> UINAVIGATIONView (LandingView + Collectionvoyer) -> UisplitViewController (DétailsView).

> Notre application ne prend en charge que le mode paysage
Je fais référence à ce So question (et application gilt aussi), comme un nouveau difficile pour moi de le faire en fonction de cette description.

Donc, mes questions sont
1) Comment puis-je obtenir la même chose, si quelqu'un peut donner de petits extraits de code ou faire référence au tutoriel de
2) Selon les pommes HIG, UisplitViewController doit être racineviewController, et si ce n'est pas le cas. Apple rejette mon application. (Apparemment groupe de gilt a été approuvé)
3) J'ai trouvé MGSplitViewController , puis-je utiliser celui-ci non en tant que root ?
Toute aide serait appréciée. En tant que nouveaubi, j'espère que ma question est authentique


0 commentaires

5 Réponses :


0
votes

Gardez à l'esprit que le HIG vous encourage fortement à soutenir toutes les orientations. À moins que vous n'ayez une très bonne raison de soutenir le paysage seulement, vous serez probablement rejeté.

Voir page 19 de la hig: http: / /Developer.apple.com/library/ios/documentation/general/conceptual/ipadhig/ipadhig.pdf


2 commentaires

Merci Dave. Mon application sera plus utilisée interne au sein d'Enterprise. (Ce n'est pas une utilisation générale.bien que je doive aller à travers le processus d'approbation de l'App Store, à droite) est-ce suffisant?


Dépend de la quantité largement que vous souhaitez qu'il soit distribué. J'ai développé des applications internes de concept de concept pour les clients déployés sur une poignée de périphériques à montrer à quelques experts. Nous étions complètement en mesure d'éviter le processus de l'App Store de cette façon. Si, toutefois, vous développez quelque chose qui sera distribué dans toute l'entreprise, vous voudrez consulter ceci: développeur.apple.com/programs/ios/enterprise . C'est le programme Apple Enterprise Developer. Je ne sais pas grand chose à ce sujet, mais je pense que c'est probablement ce que vous voulez.



12
votes

Si vous souhaitez utiliser la zone SplitView IT DOIRE Soyez root; Tout hokeary-Pokery ici sera soit des lignes directrices de pommes, soit un comportement très étrange manifeste.

Le MgsplitViefController est entièrement mise en œuvre personnalisée d'une section SplitViewController. C'est très bon si vous avez besoin de ce genre de chose, mais certaines des caractéristiques reposent sur le fait que notre application orientera.

Vous pouvez également faire la vôtre. Je l'ai fait plus d'une fois et c'est plus facile qu'il n'y paraît.

(loginview) -> UINAVIGATIONView (LandingView + CollectionView) -> UisplitViewController ( DétailsView).

Basé sur un UisplitView absentéréview, je suggérerais:

  • Faites la SPLIDVIEW la vue racine.

  • POP (non animé) Un modal plein écran dès que l'application commence et autorise le utilisateur de naviguer sur le loginview, Atterringview and Collecview dans ceci; Je recommande également d'utiliser une NavController ici.

  • une fois que l'utilisateur est prêt à passer à la SplitView, peupler le Contrôleur rootview de SplitView et DétacherViewController avec tout ce qui est Vous voulez alors, animer le mode modal.

    Dave a un point, mais je l'examinerais du point de vue que vous éliminez le choix de l'orientation de l'utilisateur; Supprimer des choix standard (comme les orientations supportées) car le concepteur suppose qu'une configuration est plus efficace ne gênera que certains utilisateurs.


4 commentaires

Merci Luke. C'est une bonne explication. Une autre pensée est venue dans mon esprit est que, si j'utilise si j'utilise UisplitViewController et masquer RootViewController et utilisez DétacherViettroller en tant que contrôleur de navigation? (Comme je n'ai que le mode paysage) est-il possible?


Je n'ai pas essayé cela et que je faudra un coup de poignard dans le noir et dire que cela pourrait vous donner des maux de tête imprévus comme redimensionner le cadre du détail. (Dans le paysage, le détailView a un décalage x de 350h) si vous vraiment veux le faire de cette façon, j'aurais boucher le MgsplitViewController dans la soumission. N'oubliez pas de lire la licence en premier. Ma suggestion originale est définitivement la solution la plus faible de la douleur.


En tant que question Addon: Même si je fais ma racine de contrôleur de vue scindée, cela ne fonctionnera que lorsqu'il sera chargé de la principale XIB. Dès que je le mettit dans un XIB séparé, associez mon contrôleur d'affichage - qui hérit d'UisplitViewController - avec elle et l'ajoutez, tout ce que je reçois est un écran noir. Mettre les points d'arrêt Je remarque que les vues intérieures du contrôleur Split ne sont jamais chargées. On dirait que l'ensemble XIB ne sera pas chargé. Mais il n'y a pas d'erreur. Des idées comment la mettre dans sa propre xib? Ou pas possible?


innerviews? Voulez-vous dire le racoliController et DétacherViewController?



2
votes

Je l'ai fait en faisant une méthode dans mon détaillantviewcontroller code>: xxx pré>

puis appelez-le dans le DétacherViewControls code> ViewDidAppear Méthode: P>

-(void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
if(firstRun)[self popHomeScreen:NO];
}

//YOU WILL ALSO NEED TO MAKE 'firstRun=YES' in viewDidLoad
//firstRun is a BOOL


1 commentaires

- Vos commentaire "Splitviews sont comme ta belle-mère, ..." est juste merveilleux :-)



2
votes

Essayez ceci, cela fonctionne pour moi

​​1) dans l'application Didfinishlaunchingwithoptions de DidfinishLaNichings rend votre affichage de connexion à la vue Root xxx

aussi, init la vue divisée comme modèle faire (mais pas ajouter à self.window) xxx

2) ajoutez un contrôleur d'affichage d'échange dans le délégué de l'application, qui échange la vue racine pour scinder la vue Contentrage. < Pré> XXX

3) Invoquez les swaptoViewControlers dans votre vue de connexion.


1 commentaires

Dans Type de racineViewController, quel besoin de donner?



0
votes

Version de Ryan CY modifiée avec Storyboard.

Mettez ce code pour vous connecter contrôleur.
1. Définissez l'ID de scénario de UisplitViewController sur SplitViewController;
2. Définissez l'UisplitViewController Déléguer et enregistrer une instance xxx

3. Modifiez RootViewController après la connexion xxx


0 commentaires