2010-04-09 40 views

Répondre

6

Il existe plusieurs applications Apple qui utilisent un contrôle segmenté pour modifier la vue: iTunes, l'application App Store et l'application YouTube. Cependant, ils l'utilisent tous en haut de l'écran, et en conjonction avec un contrôle segmenté. L'application Cartes en utilise une en bas de l'écran, mais l'idée est différente d'une barre d'onglets. L'application Calendrier en utilise également une pour les affichages Liste, Jour et Mois (dans la barre d'outils en bas).

Je pense que la règle générale est que si vous fournissez des vues différentes du même type de données, vous pouvez utiliser un contrôle segmenté. Si les éléments que vous affichez ne sont pas liés, vous devez utiliser une barre d'onglets. Vous n'auriez probablement pas une application rejetée pour l'utilisation d'un contrôle segmenté, mais les utilisateurs seraient un peu confus si vous l'utilisiez de manière non standard.

Je ne suis pas sûr de l'exemple de code, le plus proche que je pouvais voir est l'échantillon "Top Songs". Cela n'échange pas de vues, cela change simplement le FetchedResultsController lorsque le segment est cliqué.

Voici une autre question sur le SO qui est à peu près le même:

How do I use a UISegmentedControl to switch views?

1

Voici comment je l'ai fait:

-(IBAction)segmentedControlIndexChanged{ 
switch (self.segmentedControl1.selectedSegmentIndex) { 
    case 0: 
     [details1 removeFromSuperview]; 
     [details2 removeFromSuperview]; 
     [details3 removeFromSuperview]; 
     [details addSubview:details0]; 
     break; 
    case 1: 
     [details2 removeFromSuperview]; 
     [details0 removeFromSuperview]; 
     [details3 removeFromSuperview]; 
     [details addSubview:details1]; 
     break; 
    case 2: 
     [details0 removeFromSuperview]; 
     [details1 removeFromSuperview]; 
     [details3 removeFromSuperview]; 
     [details addSubview:details2]; 
     break; 
    case 3: 
     [details0 removeFromSuperview]; 
     [details1 removeFromSuperview]; 
     [details2 removeFromSuperview]; 
     [details addSubview:details3]; 
     break; 
    default: 
     break; 
} 
} 

Assurez-vous que vous liez la méthode valueChanged du contrôle segmenté IB à cette IBAction.

+0

Bonne solution, mais ce n'est pas vraiment bien à l'échelle - y at-il une manière plus élégante? – fatuhoku

+0

Vous pouvez simplement créer une association entre les vues de commutation d'un tableau et l'index sélectionné du contrôle segmenté. Ensuite, en utilisant les méthodes de vue segmentée, vous pouvez contrôler la commutation des vues. – dmcqu314