2010-07-08 9 views
7

Questa è probabilmente una domanda molto semplice, ma non riesco a trovare nulla nelle API o attraverso qualsiasi motore di ricerca.UISegmented Contol impostato su Momentary Handler

Ho un controllo Segmentato che ho impostato su momentaneo in quanto un utente selezionerà un paio di marche di un'automobile che desidera cercare. Il problema che sto incontrando è che non riesco a capire come riconoscere quale segmento è stato selezionato. In modalità normale è un semplice SelectedSegment = index ma con momentanea mi sembra che il segmento selezionato sia sempre -1 poiché nessuno è mai "selezionato"

Ho un gestore per ValueChanged ma non riesco a capire cosa sono m controllo o cosa dovrei inviare per determinare quale segmento è stato selezionato. Qualsiasi aiuto sarebbe molto apprezzato. Sto usando Monotouch ma anche Obj-C andrebbe bene.

Grazie!

risposta

10

Nel vostro gestore, si dovrebbe verificare la selectedSegmentIndex per determinare quale segmento è stato selezionato:

- (void)valueChanged:(UISegmentedControl *) control { 
    switch([control selectedSegmentIndex]) { 
     case 0: 
     //... 
     break; 
     case 1: 
     //... 
     break; 
    } 
} 
+2

Questo è corretto. UISegmentedControl traccia solo l'ultimo * elemento che è stato selezionato, non * tutti * gli elementi attualmente selezionati. Dovrai mantenere l'elenco attualmente selezionato nel tuo oggetto. –

+0

Fantastico, grazie per l'aiuto! – Adam

+3

Wow, questo funziona. La [documentazione Apple] (http://developer.apple.com/library/ios/documentation/uikit/reference/UISegmentedControl_Class/Reference/UISegmentedControl.html#//apple_ref/occ/instp/UISegmentedControl/selectedSegmentIndex) sembra indicarlo non lo farei. "UISegmentedControl ignora questa proprietà quando il controllo è in modalità momentanea." Ma selectSegmentIndex produce un buon valore, quindi funziona per me. –