我有一个包含3个包含数值的组件的UIPicker,这允许用户以hh:mm:ss格式设置时间。如果我从第一个组件中选择小时,我的UITextField看起来像这样:10 :( null):( null)。当用户选择适当的mm和ss时,可以删除(null)。但是如果用户只想输入10个小时,我希望其他值为00而不是(null),而用户不必物理移动选择器组件。
有人对此有任何想法吗?
下面的一些代码,这个问题与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]==@"Low")
numberIntensity=2;
else if ([intensityArray objectAtIndex:row]==@"Low-Medium")
numberIntensity=3.5;
else if ([intensityArray objectAtIndex:row]==@"Medium")
numberIntensity=5;
else if ([intensityArray objectAtIndex:row]==@"Medium-High")
numberIntensity=6.5;
else if ([intensityArray objectAtIndex:row]==@"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];
}
}
答案 0 :(得分:1)
我认为这一行:
time.text = [NSString stringWithFormat:@"%@:%@:%@", selectedHour, selectedMinute, selectedSecond];
可以更改为:
time.text = [NSString stringWithFormat:@"%@:%@:%@",
(selectedHour ? selectedHour : @"00"),
(selectedMinute ? selectedMinute : @"00"),
(selectedSecond ? selectedSecond : @"00")];
这假定selectedHour
,selectedMinute
和selectedSecond
在此代码之外最初都是nil
。我远离我的mac,所以我没有测试过。
或者,您可以将selectedHour
,selectedMinute
和selectedSecond
初始化为@"00"
。