web-dev-qa-db-fra.com

Meilleure implémentation de bouton radio pour IOS

J'aimerais demander s'il existe des exemples de mise en œuvre d'options de boutons radio sur une application iPhone.

Je trouve la vue Sélecteur assez grande pour une fonction de sélection simple.

Je ne sais pas si Apple a délibérément exclu des boutons radio et demandé s'il est préférable d'utiliser simplement une vue Picker du point de vue de la convivialité/de l'expérience utilisateur.

45
Jonas Arcangel

J'ai quelques réflexions sur la meilleure implémentation des boutons radio. Il peut être basé sur la classe UIButton et utiliser son état «sélectionné» pour en indiquer un dans le groupe. UIButton a des options de personnalisation natives dans IB, il est donc pratique de concevoir des fichiers XIB . Il devrait également exister un moyen simple de grouper des boutons à l'aide de connexions de sortie IB: 

J'ai mis mes idées en œuvre dans cette classe RadioButton . Fonctionne comme un charme:

Téléchargez le projet exemple .

41
onegray

Essayez UISegmentedControl . Il se comporte de la même manière que les boutons radio: il présente un éventail de choix et permet à l'utilisateur de choisir 1. 

24
jlstrecker

Je veux juste résumer, il pourrait y avoir 4 façons. 

  • Si vous n'avez pas beaucoup d'espace, ajoutez un événement click pour le texte ou le bouton, puis affichez UIPickerView:

UIPickerView

ou ouvrez un nouveau contrôle de vue table avec une coche: 

UITableView

  • S'il y a plus d'espace, ajoutez une vue sous forme de tableau directement à votre vue principale: 

enter image description here

  • La solution finale utilise UISegmentedControl: 

enter image description here

J'espère que cela t'aides. 

18
thanhbinh84

Try DLRadioButton , fonctionne à la fois pour Swift et ObjC. Vous pouvez également utiliser des images pour indiquer le statut de la sélection ou personnaliser votre propre style. 

Découvrez-le à GitHub

radio button for iOS

** Mise à jour: ajout de l'option permettant de placer l'indicateur de sélection sur le côté droit.

** Mise à jour: ajout d'un bouton carré, IBDesignable, amélioration des performances.

** Mise à jour: ajout du support de sélection multiple.

7
David Liu

Pour les écrans d'options, en particulier lorsqu'il y a plusieurs groupes de radio, j'aime utiliser une vue sous forme de tableau groupé. Chaque groupe est un groupe de radio et chaque cellule un choix au sein du groupe. Il est facile d'utiliser la vue accessoire d'une cellule pour une coche indiquant quelle option vous souhaitez.

Si seulement UIPickerView pouvait être un peu plus petit ou si leurs dégradés étaient un peu mieux adaptés à la mosaïque de deux à une page ...

6
Adam Eberbach

Je sais qu'il est très tard pour répondre à cette question, mais j'espère que cela pourra aider quiconque.

vous pouvez créer un bouton comme un bouton radio en utilisant IBOutletCollection. créer une propriété IBOutletCollection dans notre fichier .h.

@property (nonatomic, strong) IBOutletCollection(UIButton) NSArray *ButtonArray;

connectez tous les boutons avec cette IBOutletCollection et créez une méthode IBAction pour les trois boutons.

- (IBAction)btnTapped:(id)sender {
       for ( int i=0; i < [self.ButtonArray count]; i++) {
           [[self.ButtonArray objectAtIndex:i] setImage:[UIImage                         
            imageNamed:@"radio-off.png"]                 
            forState:UIControlStateNormal];
       }
     [sender setImage:[UIImage imageNamed:@"radio-on.png"]
      forState:UIControlStateNormal];
}
6
riddhi

J'ai écrit un contrôleur pour gérer la logique derrière un tableau de boutons radio. C'est open source et sur GitHub, allez y faire un tour!

https://github.com/goosoftware/GSRadioButtonSetController

5
Simon Whitaker
-(void)radiobutton:(id)sender
{
ischecked =!ischecked;
UIButton *check = (UIButton*)sender;
if(ischecked == NO)
    [check setImage:[UIImage imageNamed:@"checkbox1.png"] forState:UIControlStateNormal];
else 
    [check setImage:[UIImage imageNamed:@"checkbox-pressed.png"] forState:UIControlStateNormal];
}
0
Sakshi Singla

La méthode simple suivante pour créer un bouton radio dans votre application iOS suit deux étapes.

Etape 1 - Mettez ce code dans votre viewDidLoad ou toute autre méthode souhaitée

 [_mrRadio setSelected:YES];
        [_mrRadio setTag:1];
        [_msRadio setTag:1];
        [_mrRadio setBackgroundImage:[UIImage imageNamed:@"radiodselect_white.png"] forState:UIControlStateNormal];
        [_mrRadio setBackgroundImage:[UIImage imageNamed:@"radioselect_white.png"] forState:UIControlStateSelected];
        [_mrRadio addTarget:self action:@selector(radioButtonSelected:) forControlEvents:UIControlEventTouchUpInside];

        [_msRadio setBackgroundImage:[UIImage imageNamed:@"radiodselect_white.png"] forState:UIControlStateNormal];
        [_msRadio setBackgroundImage:[UIImage imageNamed:@"radioselect_white.png"] forState:UIControlStateSelected];
        [_msRadio addTarget:self action:@selector(radioButtonSelected:) forControlEvents:UIControlEventTouchUpInside];

Etape 2 - Mettez la méthode IBAction suivante dans votre classe

-(void)radioButtonSelected:(id)sender
{
    switch ([sender tag ]) {
        case 1:
            if ([_mrRadio isSelected]==YES) {
              //  [_mrRadio setSelected:NO];
               // [_msRadio setSelected:YES];
               genderType = @"1";
            }
            else
            {
                [_mrRadio setSelected:YES];
                [_msRadio setSelected:NO];
                genderType = @"1";
            }
            break;
        case 2:
            if ([_msRadio isSelected]==YES) {
               // [_msRadio setSelected:NO];
               // [_mrRadio setSelected:YES];
                genderType = @"2";
            }
            else
            {
                [_msRadio setSelected:YES];
                [_mrRadio setSelected:NO];
                 genderType = @"2";
            }
            break;
        default:
            break;
    }
}
0