繁体   English   中英

UIPicker-初始值问题

[英]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")];

这假定在此代码之外, selectedHourselectedMinuteselectedSecond最初都为nil 我离开了我的Mac,因此尚未测试。

或者,您可以将selectedHourselectedMinuteselectedSecond初始化为@"00"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM