2009-03-19 8 views
13

Je dois ajouter des boutons radio dans mon application iPhone. Pour cela, j'ai une image de bouton radio qui est de forme ronde. Puis-je ajouter cette image en tant que sous-vue? Puis-je ajouter un événement touchupinside à UIImage?Bouton radio dans l'application iPhone

+0

J'ai essayé ce que vous avez dit, ça marche bien. Initialement le bouton ressemble à un bouton rond, mais au moment où le bouton est cliqué, le cadre du bouton apparaît (ressemble à un bouton carré) – saikamesh

Répondre

19

Les applications iPhone ne disposent pas de boutons radio. La façon "iPhone-like" de faire cela est soit en utilisant une vue sélecteur ou en ayant plusieurs lignes dans une vue de tableau groupé avec un accessoire de vérification sur la ligne choisie.

Si, pour une raison quelconque, vous ressentez vraiment le besoin d'avoir des boutons radio, utilisez un UIButton avec un type de bouton personnalisé. Définissez le cercle vide comme image pour l'état de contrôle "normal" et le cercle rempli comme image pour l'état "sélectionné".

+0

J'ai essayé ce que vous avez dit, ça marche bien. Initialement, le bouton ressemble à un bouton rond, mais au moment où le bouton est cliqué, le cadre du bouton apparaît (ressemble à un bouton carré) – saikamesh

+0

Comment puis-je me débarrasser de cette chose? – saikamesh

+0

Si celui-ci n'est pas faisable, je dois essayer autre chose. Alors s'il vous plaît dites-moi s'il est possible de se débarrasser de ce comportement – saikamesh

0

Vous pouvez essayer d'utiliser la classe UIImageView qui enveloppe simplement un UIImage dans un conteneur UIView. Il supporte les évènements touchesBegan/Annulé qui conviendraient je pense. Vous pouvez également envisager de ne pas utiliser une véritable configuration de bouton radio comme vous l'avez décrit et d'adopter une approche similaire à celle de l'iPhone, par exemple, en utilisant un UITableView avec des cellules correspondant à vos sélections radio et en cochant cette option./décoché sur un toucher. Voir l'exemple TouchCells sur le site de développement Apple iPhone pour un exemple.

+0

J'ai créé ma classe de boutons radio en étendant la classe UIButton, dans ma classe de radiobutton, comment J'ai mis le buttontype à UIButtonTypeCustom ?. – saikamesh

+0

Personnalisé est le type de bouton par défaut. –

+0

Salut drewh, Enfin, j'ai fait ce que vous avez suggéré. J'ai utilisé la classe UIImageView et l'événement touchesBegan. Cela fonctionne bien sans problèmes. Merci beaucoup. Merci aussi à Brent de m'avoir donné des idées. – saikamesh

1

Vous pouvez également créer un UIWebView, y charger du code HTML qui utilise des boutons radio, puis utiliser les méthodes de délégation UIWebView pour surveiller la valeur de la radio.

C'est un peu un hack, mais dans certains cas, c'est exactement ce qu'il faut.

0

Si vous n'avez que des options "oui" ou "non", utilisez UISwitch.

Pour le type multiple utilisent le code ci-dessous:

-(void)buttonPressed:(id)sender{ 

if([sender isSelectd]) 

//here change button image and set 

[sender setSelected:NO]; 

}else{ 
//here change button image and set 

[sender setSelected:YES]; 

} 

rappelez-vous, lorsque vous créez le bouton ne pas oublier de régler la setSelected NO.

5

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

+0

savez-vous comment UISegmentedControl peut être créé en Titanium? –

2
IBOutlet UIButton *checkboxButtonMale; 

IBOutlet UIButton *checkboxButtonFmale; 

    checkboxButtonFmale.tag = 3; 
    checkboxButtonMale.tag = 2; 

(IBAction)checkboxGenderChecked:(id)sender{ 


    UIButton *selectedButton = (UIButton *)sender; 
    UIButton *toggledButton; 

    if (selectedButton.tag == 2) { 
     toggledButton = checkboxButtonFmale; 
    } 
    else {  
     toggledButton = checkboxButtonMale; 
    } [toggledButton setSelected:NO]; 
    [sender setSelected:YES]; 
     } 
0

Je l'ai fait quelque chose comme ça et ça marche:

- (IBAction)tickbuttonClicked:(id)sender 
{ 

UIButton *selectedButton = sender; 
UIImage *ticked = [UIImage imageNamed:@"tickbox_yes3.png"]; 
UIImage *unticked = [UIImage imageNamed:@"tickbox_no3.png"];  

    //untick active box 
    if((activetag>-1)&&(activetag!=[sender tag])){ 
     UIButton *thisButton = (UIButton *)[self.view viewWithTag:activetag]; 
     thisButton.backgroundColor = [UIColor colorWithPatternImage:unticked]; 
    } 

//tick sender 
if ([sender tag]!=activetag) 
{ 
    selectedButton.backgroundColor = [UIColor colorWithPatternImage:ticked]; 
    activetag=[sender tag]; 
    [selectedButton setSelected:YES]; 

} 

} 
1

Vous pouvez utiliser un tableau de UIButton s , puis utilisez ma classe GSRadioButtonSetController pour gérer la logique (essentiellement, en vérifiant qu'un seul bouton peut être sélectionné). Voir le fichier README sur GitHub pour un exemple d'utilisation.

0

// définir la propriété du bouton

Déclare Unchaked image

- (void)viewDidLoad 
    { 
     [ButtonChaked setBackgroundImage:[UIImage imageNamed:@"UnChacked.png"] forState:UIControlStateNormal]; 
    } 

Chaked image.

- (IBAction)ButtonChaked:(id)sender 
{ 
    if (ButtonChaked.selected ==YES) 
    { 
     [ButtonChaked setBackgroundImage:[UIImage imageNamed:@"UnChacked.png"] forState:UIControlStateSelected]; 

    ButtonChaked.selected =NO; 

} 
else 
{ 
    [ButtonChaked setBackgroundImage:[UIImage imageNamed:@"Chaked.png"] forState:UIControlStateNormal]; 
    ButtonChaked.selected = YES; 

} 


} 

qui est vraiment utilisé

0

Je viens de publier un contrôle de bouton radio iOS Cocoapods pod "DLRadioButton", pour la documentation et des exemples, s'il vous plaît aller à GitHub. Ci-joint des captures d'écran pour ce contrôle. enter image description here

Questions connexes