83 votes

Comment puis-je utiliser un UISegmentedControl pour changer de vue?

Je suis à essayer de comprendre comment utiliser les différents états d'un UISegmentedControl pour changer de vue, de la même manière qu'Apple sur l'App Store quand switiching entre "Top payant" et "Haut".

113voto

Ronnie Liew Points 11112

L'approche la plus simple est d'avoir deux points de vue que vous pouvez activer leur visibilité à indiquer le point de vue a été sélectionné. Voici un exemple de code sur la façon dont il peut être fait, certainement pas un moyen optimisé pour gérer les points de vue, mais juste pour montrer comment vous pouvez utiliser la UISegmentControl pour basculer l'affichage visible:

- (IBAction)segmentSwitch:(id)sender {
  UISegmentedControl *segmentedControl = (UISegmentedControl *) sender;
  NSInteger selectedSegment = segmentedControl.selectedSegmentIndex;

  if (selectedSegment == 0) {
    //toggle the correct view to be visible
    [firstView setHidden:NO];
    [secondView setHidden:YES];
  }
  else{
    //toggle the correct view to be visible
    [firstView setHidden:YES];
    [secondView setHidden:NO];
  }
}


Vous pouvez bien sûr encore re-facteur le code pour afficher/masquer la vue de droite.

44voto

Marc M Points 746

Dans mon cas, mon point de vue assez complexe et je ne peux pas il suffit de changer la propriété hidden de différents points de vue parce que cela prendrait trop de mémoire.

J'ai essayé plusieurs solutions et non d'entre eux ont travaillé pour moi, ou réalisées de manière erratique, spécialement avec la titleView de la barre de navigation pas toujours montrant la segmentedControl lors de la poussée/vues surgissent.

J'ai trouvé ce billet de blog sur la question qui vous explique comment faire de la bonne façon. Il semble qu'il a eu l'aide d'ingénieurs Apple lors de la WWDC'2010 à venir avec cette solution.

http://redartisan.com/2010/6/27/uisegmented-control-view-switching-revisited

La solution dans ce lien est des mains vers le bas la meilleure solution que j'ai trouvé sur la question jusqu'à présent. Avec un peu d'ajustement, il a également travaillé très bien avec un tabBar en bas

17voto

newgenapps_dev Points 23557

Ou si ses une table, vous pouvez recharger la table et dans cellForRowAtIndex, remplir le tableau à partir de différentes sources de données basées sur le segment de l'option sélectionnée.

7voto

Une idée est d'avoir le point de vue avec la segmentation des contrôles ont un conteneur de vue que vous remplissez avec les différents sous-vues (ajouter qu'un seul sous-vue du conteneur de vue lorsque les segments sont basculés). Vous pouvez même avoir séparé la vue des contrôleurs pour ceux des sous-vues, si vous avez à l'avant sur les méthodes comme "viewWillAppear" et "viewWillDisappear" si vous avez besoin d'eux (et ils devront être dit quoi manette de navigation, ils sont moins).

En général ça fonctionne assez bien, parce que vous pouvez mettre hors de la vue principale avec le récipient dans de l'IB, et les sous-vues va remplir tout l'espace du conteneur leur permet d'avoir (assurez-vous que votre autoresize masques sont mis en place correctement).

7voto

Soniya Points 544

Essayez ce code, Cela vous permet de basculer entre les différentes Vues sur l'évolution des segments du Segment de Contrôle

Ouvrir des Vues Différentes sur la sélection des différents segments de UISegmentControl

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