2009-03-19 19 views
13

Devo aggiungere pulsanti di opzione nella mia applicazione iPhone. Per quello ho l'immagine del pulsante radio che è di forma rotonda. Posso aggiungere quell'immagine come sottoview? e Posso aggiungere l'evento touchupinside a UIImage?Pulsante di scelta nell'app per iPhone

+0

Ho provato quello che hai detto, funziona bene. Inizialmente il pulsante appare come un pulsante rotondo, ma nel momento in cui si fa clic sul pulsante, appare la cornice del pulsante (appare come un pulsante quadrato) – saikamesh

risposta

19

Le app per iPhone non dispongono di pulsanti di opzione. Il modo "simile all'iPhone" per farlo è utilizzando una vista di selezione o disponendo di più righe in una vista tabella raggruppata con un accessorio di controllo sulla riga scelta.

Se per qualche motivo si sente davvero la necessità di avere pulsanti di opzione, utilizzare un UIButton con un tipo di pulsante personalizzato. Imposta il cerchio vuoto come immagine per lo stato di controllo "normale" e il cerchio pieno come immagine per lo stato "selezionato".

+0

Ho provato quello che hai detto, funziona bene. Inizialmente il pulsante ha l'aspetto di un pulsante rotondo, ma nel momento in cui si fa clic sul pulsante, viene visualizzata la cornice del pulsante (appare come un pulsante quadrato) – saikamesh

+0

Come posso eliminare questa cosa? – saikamesh

+0

Se questo non è fattibile, devo provare qualcos'altro. Quindi, per favore dimmi se è possibile sbarazzarsi di questo comportamento – saikamesh

0

Si può provare a utilizzare la classe UIImageView che include semplicemente una UIImage all'interno di un contenitore UIView. Supporta i tocchi Gli eventi in arrivo/annullati che sarebbero adatti credo.

Si potrebbe anche considerare di non utilizzare con una configurazione di pulsante di opzione vera come descritto e invece di adottare un approccio più simile all'iPhone - ad esempio, utilizzando UITableView con celle corrispondenti alle selezioni radio e che si seleziona/disattiva/deselezionato con un tocco. Per un esempio, vedi l'esempio TouchCells sul sito di Apple iPhone dev.

+0

Ho creato la mia classe di pulsanti di opzione estendendo la classe UIButton, nella mia classe di radiobutton, come può Ho impostato il buttontype su UIButtonTypeCustom ?. – saikamesh

+0

Personalizzato è il tipo di pulsante predefinito. –

+0

Ciao drewh, Finalmente ho fatto quello che mi hai suggerito. Ho usato la classe UIImageView e ho toccato l'evento Began. Funziona bene senza problemi. Molte grazie. Grazie anche a Brent per avermi dato delle idee. – saikamesh

1

È anche possibile creare un UIWebView, caricarlo in HTML che utilizza i pulsanti di opzione, quindi utilizzare i metodi delegat di UIWebView, monitorare il valore della radio.

È una specie di trucco, ma in alcuni casi è esattamente ciò che è richiesto.

0

Se si dispone solo di opzioni "sì" o "no", utilizzare UISwitch.

Per il tipo più utilizzare il codice qui sotto:

-(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]; 

} 

ricordate, quando si crea il pulsante non dimenticare di impostare il setSelected a NO.

5

Prova UISegmentedControl. Si comporta in modo simile ai pulsanti di opzione - presenta una serie di scelte e consente all'utente di scegliere 1.

+0

sai come UISegmentedControl può essere creato in 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

ho fatto qualcosa di simile e funziona:

- (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

Si potrebbe utilizzare una vasta gamma di UIButton s , quindi utilizzare la classe GSRadioButtonSetController per gestire la logica (essenzialmente, assicurandosi che sia possibile selezionare un solo pulsante). Vedi il README su GitHub per l'utilizzo di esempio.

0

// definire la proprietà di pulsante

Dichiarare Immagine Unchaked

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

Chaked Immagine.

- (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; 

} 


} 

che sta realmente utilizzato

0

Ho appena pubblicato un controllo pulsante iOS Radio per Cocoapods pod "DLRadioButton", per la documentazione e gli esempi, si prega di andare a GitHub. In allegato sono schermate per questo controllo. enter image description here

Problemi correlati