2010-08-24 4 views
0

Je veux créer un sélecteur qui ressemble et fonctionne comme le champ de pays du compte de magasin iTunes. Voici de quoi je parle.liste de sélection pour l'iPhone qui ressemble à la fonction de sélection de pays

http://i38.tinypic.com/5p0w91.jpg

Ce sélecteur ne dispose pas d'une ligne en surbrillance. Il a un signe "correct" marqué devant la ligne sélectionnée. l'utilisateur peut faire défiler ce sélecteur, puis sélectionner la ligne afin que le signe "correct" apparaisse devant la nouvelle ligne sélectionnée. Quelqu'un peut-il aider s'il vous plaît?

Répondre

0

Je ne suis pas familier avec le codage des applications, mais pour une interface utilisateur basée sur un navigateur (Safari), vous simplement utiliser un simple menu déroulant vers le bas:

<select> 
<option>Country 1</option> 
<option>Country 2</option> 
... 
<option>Country N</option> 
</select> 

Deviner quel que soit l'équivalent dans l'iPhone SDK devrait fonctionner de la même manière.

2

Ceci peut être accompli relativement facilement en utilisant un sélecteur avec des vues de composants personnalisées. Utilisez une variable d'instance pour suivre la ligne sélectionnée et modifiez la couleur de votre étiquette en conséquence. Si vous souhaitez inclure la coche, vous devez aller plus loin et utiliser une sous-classe personnalisée de UIView plutôt qu'un simple UILabel.

 

@interface ViewContainingPicker 
{ 
    NSUInteger mySelectedRow; 
} 
@end 

@implementation ViewContainingPicker 

// Init, Picker setup, etc 
- (UIPickerView *)myPickerView 
{ 
    // Create picker, set mySelectedRow to NSNotFound 
    mySelectedRow = NSNotFound; 
    return myPickerView; 
} 

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view 
{ 
    UILabel *label = (UILabel *)view; 

    if (nil == label) { 
     UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(0, 0, PICKER_WIDTH, PICKER_ROW_HEIGHT)] autorelease]; 
    } 

    label.text = @"Label for this row"; 

    // Selected Row will be blue 
    if (row == mySelectedRow) { 
     label.textColor = [UIColor blueColor]; 
    } else { 
     label.textColor = [UIColor blackColor]; 
    } 

    return label; 
} 

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component 
{ 
    // Just set selected component and reload, color will change in dataSource pickerView:viewForRow:forComponent:reusingView: 
    mySelectedRow = row; 
    [pickerView reloadComponent:component]; 
} 
 
Questions connexes