2010-09-23 6 views
1

J'ai un UIPicker avec 3 composants contenant des valeurs numériques, cela permet à l'utilisateur de régler l'heure au format hh: mm: ss. Si je sélectionne l'heure du premier composant mon UITextField ressemble à ceci: 10: (null) :(null). La valeur (null) peut être supprimée lorsque l'utilisateur sélectionne le mm et le ss appropriés. Mais si l'utilisateur veut simplement entrer 10 heures, je veux que les autres valeurs soient 00 au lieu de (null), sans que l'utilisateur doive déplacer physiquement les composants du sélecteur.UIPicker - Problème de valeur initiale

Vous avez des idées à ce sujet?

Quelque code ci-dessous, cette question est liée au timePicker.

-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component 
{ 
    if([pickerView isEqual: routePicker]) 
    { 
     route.text = [[routeArray objectAtIndex:0] valueForKey:@"route_name"]; 
     return [[routeArray objectAtIndex:row] valueForKey:@"route_name"]; 
    } 
    else if([pickerView isEqual: activityPicker]) 
    { 
     activity.text = [activityArray objectAtIndex:0]; 
     return [activityArray objectAtIndex:row]; 
    } 
    else if([pickerView isEqual: intensityPicker]) 
    { 
     if ([intensityArray objectAtIndex:row][email protected]"Low") 
      numberIntensity=2; 
     else if ([intensityArray objectAtIndex:row][email protected]"Low-Medium") 
      numberIntensity=3.5; 
     else if ([intensityArray objectAtIndex:row][email protected]"Medium") 
      numberIntensity=5; 
     else if ([intensityArray objectAtIndex:row][email protected]"Medium-High") 
      numberIntensity=6.5; 
     else if ([intensityArray objectAtIndex:row][email protected]"High") 
      numberIntensity=8; 
     else numberIntensity=0; 

     intensity.text = [intensityArray objectAtIndex:0]; 
     return [intensityArray objectAtIndex:row]; 
    } 
    else if([pickerView isEqual: timePicker]) 
    { 
     switch (component) 
     { 
      case 0: 
       return [hourArray objectAtIndex:row]; 
       break; 
      case 1: 
       return [minuteArray objectAtIndex:row]; 
       break; 
      case 2: 
       return [secondArray objectAtIndex:row]; 
       break; 
      default: 
       return 0; 
       break; 
     } 
    } 
    else if([pickerView isEqual: distancePicker]) 
    { 
     switch (component) 
     { 
      case 0: 
       return [distance1Array objectAtIndex:row]; 
       break; 
      case 1: 
       return [distance2Array objectAtIndex:row]; 
       break; 
      default: 
       return 0; 
       break; 
     } 
    } 
    else 
    { 
     return 0; 
    } 
} 



-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component 
{ 
    if([pickerView isEqual: routePicker]) 
    { 
     route.text = [[routeArray objectAtIndex:row] valueForKey:@"route_name"]; 
    } 
    else if([pickerView isEqual: timePicker]) 
    { 
     if (component == 0) 
     { 
      selectedHour = [hourArray objectAtIndex:row]; 
     } 
     else if (component == 1) 
     { 
      selectedMinute = [minuteArray objectAtIndex:row]; 
     } 
     else if (component == 2) 
     { 
      selectedSecond = [secondArray objectAtIndex:row]; 
     } 
     time.text = [NSString stringWithFormat:@"%@:%@:%@", selectedHour, selectedMinute, selectedSecond]; 
    } 
    else if([pickerView isEqual: distancePicker]) 
    { 
     if (component == 0) 
     { 
      selectedDistance1 = [distance1Array objectAtIndex:row]; 
     } 
     else if (component == 1) 
     { 
      selectedDistance2 = [minuteArray objectAtIndex:row]; 
     } 
     distance.text = [NSString stringWithFormat:@"%@.%@", selectedDistance1, selectedDistance2]; 
    } 
    else if([pickerView isEqual: activityPicker]) 
    { 
     activity.text = [activityArray objectAtIndex:row]; 
    } 
    else if([pickerView isEqual: intensityPicker]) 
    { 
     intensity.text = [intensityArray objectAtIndex:row]; 
    } 
} 

Répondre

1

Je pense que cette ligne:

time.text = [NSString stringWithFormat:@"%@:%@:%@", selectedHour, selectedMinute, selectedSecond]; 

pourrait être modifiée:

time.text = [NSString stringWithFormat:@"%@:%@:%@", 
      (selectedHour ? selectedHour : @"00"), 
      (selectedMinute ? selectedMinute : @"00"), 
      (selectedSecond ? selectedSecond : @"00")]; 

Cela suppose que selectedHour, selectedMinute et selectedSecond sont tous d'abord nil en dehors de ce code. Je suis loin de mon mac, donc je n'ai pas testé cela.

Vous pouvez également initialiser selectedHour, selectedMinute et selectedSecond à @"00".

+0

Merci, je viens d'initialiser selectHour, selectMinute et sélectionnezSecond à @ "00". – Stephen

Questions connexes