iphone - UIPicker - Initial value problem -


i have uipicker 3 components containing numeric values, allows user set time in hh:mm:ss format. if select hour first component uitextfield looks this: 10:(null):(null). (null) can removed when user selects appropriate mm , ss. if user wants enter 10 hours, want other values 00 instead of (null), without user having physically move picker components.

anyone have ideas on ?

some code below, question related 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];     } } 

i think line:

time.text = [nsstring stringwithformat:@"%@:%@:%@", selectedhour, selectedminute, selectedsecond]; 

could changed to:

time.text = [nsstring stringwithformat:@"%@:%@:%@",              (selectedhour ? selectedhour : @"00"),              (selectedminute ? selectedminute : @"00"),              (selectedsecond ? selectedsecond : @"00")]; 

this assumes selectedhour, selectedminute , selectedsecond nil outside of code. away mac, haven't tested this.

alternatively, initialize selectedhour, selectedminute , selectedsecond @"00".


Comments

Popular posts from this blog

c++ - Convert big endian to little endian when reading from a binary file -

C#: Application without a window or taskbar item (background app) that can still use Console.WriteLine() -

unicode - Are email addresses allowed to contain non-alphanumeric characters? -