[英]UIPicker - Initial value problem
我有一个包含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];
}
}
我认为这条线:
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"
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.