2011-08-23 6 views
4

J'ai une application dans laquelle j'alloue dynamiquement 5 UISegmentedControl dans la vue. Et a obtenu un bouton Terminé à la fin. Ma condition que pour passer à l'étape suivante (lorsque le bouton est enfoncé), tous les UISegmentControl "doivent être sélectionnés par l'utilisateur".Comment vérifier si UISegmentedControl est sélectionné ou non par l'utilisateur?

La sélection par défaut dans segmentcontrol est none. Comment vérifier si tous les UISegmentedControls dans ma vue est sélectionné par l'utilisateur avant que l'action sur le bouton done soit exécutée?

+0

Un seul segment peut être sélectionné à la fois, qu'entendez-vous par ** tout le uisegmentedcontrol dans ma vue est sélectionné par l'utilisateur **? Voulez-vous dire ** tout le uisegmentedcontrol selon moi a été sélectionné par l'utilisateur **? –

+0

un choix peut être sélectionné .ok. Mais j'ai 5 uisegmentedcontrol à mon avis. Comment vérifier si tous sont sélectionnés avant un bouton final terminé appuyez sur ?? –

Répondre

10

droit du document de pomme, cela devrait répondre à votre question:

@property(nonatomic) NSInteger selectedSegmentIndex 

Discussion La valeur par défaut est UISegmentedControlNoSegment (aucun segment sélectionné) jusqu'à ce que l'utilisateur touche un segment.

Espérons que vous pouvez l'utiliser pour vérifier si la valeur est sélectionnée par l'utilisateur ou non, pour éviter d'aller à la page suivante.

0

Ajoutez la cible et l'action à vos segmentsControls pour UIControlEventValueChanged. A partir du sélecteur que vous avez activé, vérifiez quel segmentControl a été modifié et définissez son drapeau correspondant (ex: tableau de chaînes qui sont @ "0" pour non sélectionné et @ "1" une fois sélectionné).

A tout moment, vérifiez quels indicateurs ne sont pas définis, les segmentsControls correspondants n'ont jamais été sélectionnés.

0

Voici comment u créer un UISegmentedControl

NSArray *itemArray = [NSArray arrayWithObjects: @"Title1", @"Title2", @"Title3", @"Title4",nil]; 
segmentedControl = [[UISegmentedControl alloc] initWithItems:itemArray]; 
segmentedControl.frame = CGRectMake(0, 0, 310, 35); 
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar; 
segmentedControl.selectedSegmentIndex = 0; 
[segmentedControl addTarget:self action:@selector(pickOne:) forControlEvents:UIControlEventValueChanged]; 
segmentedControl.tintColor=[UIColor grayColor]; 

Ensuite, pour trouver quel segment a été sélectionné,

NSString *category =[segmentedControl titleForSegmentAtIndex: [segmentedControl selectedSegmentIndex]]; 

if([email protected]"Title1"){ 
    //Do something here.. 
} 

Hope this helps .... Bonne programmation

+0

La 2ème partie du code doit être écrit à l'intérieur de la méthode appelée - (void) pickOne: (id) expéditeur .... (c'est selon le code ci-dessus ..) – booleanBoy

+0

merci ..mais comment puis-je connaître tous les contrôles de segment sont sélectionnés ?? –

+0

Que voulez-vous dire par toutes les commandes de segment sont sélectionnés .... L'utilisateur sera en mesure de sélectionner un seul à la fois .... – booleanBoy

5
NSLog(@"%i", self.segment.selectedSegmentIndex); 

cette résultats -1 si aucun segment n'est sélectionné.

Questions connexes