Changement de Conteneur Affichage du Contenu avec des Onglets dans iOS
Je suis en train de faire un formulaire qui s'étend sur trois onglets. Vous pouvez le voir dans la capture d'écran ci-dessous où les languettes. Lorsque l'utilisateur clique sur un onglet, le Conteneur de Vue doivent mettre à jour et de montrer un point de vue particulier contrôleur que j'ai.
Onglet 1 = View Controller 1
Tab 2 = - Vue-Contrôleur 2
Tab 3 = - Vue-Contrôleur 3
La-vue-contrôleur illustré ci-dessus a la classe PPAddEntryViewController.m. J'ai créé un débouché pour le Conteneur de vue dans cette classe, et ils ont maintenant un Conteneur de Vue de la propriété:
@property (weak, nonatomic) IBOutlet UIView *container;
J'ai aussi mon IBActions pour mes onglets prêt:
- (IBAction)tab1:(id)sender {
//...
}
- (IBAction)tab2:(id)sender {
//...
}
- (IBAction)tab3:(id)sender {
//...
}
Comment dois-je placer le récipient dans ces IBActions pour modifier l'affichage du contrôleur que le Conteneur d'avis?
Parmi quelques autres choses, voici ce que j'ai essayé:
UIViewController *viewController1 = [self.storyboard instantiateViewControllerWithIdentifier:@"vc1"];
_container.view = viewController1;
...mais ça ne fonctionne pas. Merci à l'avance.
OriginalL'auteur Clifton Labrum | 2013-05-02
Vous devez vous connecter pour publier un commentaire.
De commutation à l'aide de Storyboard, mise en page Automatique ou pas, d'un Bouton d'une certaine sorte, et une série de Vue d'Enfant Contrôleurs
Vous souhaitez ajouter le conteneur affichage de votre vue et lorsque les boutons 'switch' enfant de voir les contrôleurs sont pressés d'incendie appropriés segue et effectuer l'installation correcte de travail.
Dans le Storyboard vous ne pouvez brancher qu'une seule Intégrer des Enchaînements pour le Conteneur de Vue. Ainsi, vous créez un traitement intermédiaire du contrôleur. Faire de l'intégration des enchaînements et de lui donner un identifiant, par exemple EmbededSegueIdentifier.
Dans votre parent-vue-contrôleur de fil le bouton ou ce que vous voulez et de garder de référence sont à votre enfant de voir le contrôleur de préparer la transition. Dès que le parent-vue-contrôleur de charge de la transition va se faire virer.
La Vue Parent Contrôleur
Il devrait être assez facile pour vous de déléguer à votre conteneur de contrôleur de l'appuie sur un bouton.
Le Conteneur Contrôleur
Ce bit suivant du code a été en partie emprunté à un couple de sources, mais le principal changement est que la mise en page automatique est utilisé par opposition à l'explicite des cadres. Rien ne vous empêche de simplement changer les lignes
[self addConstraintsForViewController:]
pourviewController.view.frame = self.view.bounds
. Dans le story-board de ce Conteneur-Vue-Contrôleur n'a rien fait de plus que segue à la destination de vue d'enfant contrôleurs.La Coutume Enchaîne
La dernière chose que vous avez besoin est une coutume des enchaînements qui ne fait rien, va chaque destination avec les enchaînements en identifiant qui est appelée à partir du Conteneur de-Vue-Contrôleur. Si vous ne le mettez pas dans un vide effectuer la méthode l'application crash. Normalement, vous pourriez faire quelques personnalisé animation de transition ici.
OriginalL'auteur
J'ai récemment trouvé la parfait exemple de code pour ce que j'essayais de faire. Il comprend le Storyboard de la mise en œuvre et les enchaîne et le code. Il a été vraiment utile.
https://github.com/mhaddl/MHCustomTabBarController
OriginalL'auteur
Mise à jour: UITabBarController est la méthode recommandée pour aller, comme vous l'avez trouvé plus tôt. Dans le cas où vous souhaitez avoir une hauteur personnalisée, ici, c'est un bon début: Ma façon de personnalisation UITabBarController la tabbar - Stackoverflow répondre
Comme de l'iOS 5+ vous avez accès à personnaliser l'apparence via cette API; UIAppearance Protocole De Référence. Voici un tutorial pour que: Comment Personnaliser la Barre d'Onglet en arrière-plan et l'Apparence
Le moyen le plus évident d'obtenir ce que vous cherchez est tout simplement de gérer les 3 récipients différents (ils sont simples UIViews) et de mettre en œuvre chacun d'eux pour tenir quel que soit l'affichage du contenu dont vous avez besoin pour chaque onglet (utiliser la propriété hidden des conteneurs).
Voici un exemple de ce qu'il est possible de réaliser avec différents contenants:
Ces conteneurs "échange" peut être animé, bien sûr. Au sujet de votre auto-réponse, vous avez probablement choisi le bon moyen de le faire.
Je ne pense pas que je l'ai mentionné tab bar controller. - Je voir les onglets. Le point est, le conteneur de vue n'est pas censé avoir d'intégration de vue-contrôleur échangé comme il semble vouloir.
J'y ai pensé juste montrer/cacher les points de vue de tous au sein du même point de vue, contrôleur, mais comme un story-board de l'utilisateur, c'est plus pratique si je peux garder chacun des 3 points de vue en tant que distincte de la vue des contrôleurs. Cela me permettrait de style de chacun de la vue des contrôleurs séparément et être en mesure de voir sa mise en page (avoir caché points de vue ne serait pas tout à fait aussi pratique).
le conteneur en vue d'obtenir un nouveau Parent à chaque fois" -> pas SEULEMENT si il n'y avait tabviewcontroller impliqués que passer le conteneur. l'idée ici est de changer le contenu du conteneur
Vous ne savez pas si c'est toi qui baisse voté, mais permettez-moi de préciser ma réponse donc peut-être ce plus compréhensible. Je vais aussi mettre à jour ma réponse avec un exemple concret de ce que je dis.
OriginalL'auteur
ont un membre de la variable pour contenir le viewController:
maintenant dans le IBActions, interrupteur ET de la vue. par exemple,
à feu n'apparaissent et des trucs appel removeChildViewController, didMoveToParent, addChildViewController, didMoveToParent
selectedViewController = viewController1;
est-ce?Je continue à avoir du mal à obtenir que cela fonctionne. Est-il possible que vous pouvez jeter un rapide Xcode projet de swaps sur le contenu d'un UIContainerView entre deux viewControllers dans un Storyboard? Je crois que je l'ai câblé correctement, mais je ne suis pas en mesure d'obtenir le point de vue dans le ControllerView à changer.
Cette solution fonctionne! Assurez-vous de vous enregistrer pour stocker selectedViewController comme l'illustre cet exemple. J'ai sauté la partie, et continué à obtenir de la mémoire de justesse. C'est parce qu'il a été libéré après tab1 était fini, ce qui a empêché mon nouveau contrôleur du travail à tous.
OriginalL'auteur
J'ai eu ce travail à l'aide d'un UITabBarController. Afin d'utiliser des onglets personnalisés, j'ai eu une classe de la TabBarController et ajouter les boutons de la manette dans le code. Je puis écouter appuyez sur événements sur les boutons et définir la
selectedIndex
pour chaque onglet.C'était assez simple, mais c'est beaucoup de cochonneries dans mon Storyboard pour quelque chose d'aussi simple que de 3 onglets.
J'ai essayé de le faire avec une approche manuelle de changer les points de vue comme vous l'avez dit, et je l'apprécie vraiment mieux. Ensuite, il n'y a qu'une seule manette de navigation à jouer, un bouton Enregistrer, et beaucoup moins de redondance dans mon storyboard. Je pense que je vais aller avec ce que vous avez mentionné, après tout. Je ne vois pas votre réponse, mais merci pour carillon!
ma réponse est en bas et commence avec " avoir une variable de membre ...' 🙂
OriginalL'auteur