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.
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:
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.
Je veux juste résumer, il pourrait y avoir 4 façons.
ou ouvrez un nouveau contrôle de vue table avec une coche:
J'espère que cela t'aides.
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 .
** 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.
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 ...
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];
}
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!
-(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];
}
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;
}
}