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
Post a Comment