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".
Réponses
Trop de publicités?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.
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
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).
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