2012-10-12 159 views
5

Mi aplicación es un convertidor con una rueda selectora multicomponente. Está hecho para convertir algunas variables. Los números que puedes ver son solo para probar, nada importante realmente.UIPickerView muestra títulos incorrectos

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    _convertFrom = @[@"One (1)", @"Two (2)", 
    @"Three (3)", @"Four (4)", @"Five (5)"]; 

    _convertRates = @[ @1.0f, @2.0f, @3.0f, 
    @4.0f, @5.0f]; 

    _convertTo = @[@"One (1)", @"Two (2)", 
    @"Three (3)", @"Four (4)", @"Five (5)"]; 

_convertRates = @[ @1.0f, @2.0f, @3.0f, 
@4.0f, @5.0f]; 

} 

Tengo un pequeño problema con los números que se muestran cuando pruebo la aplicación en el simulador de iOS 6. Como se puede ver aquí:

Screenshot

http://imgur.com/q4uxm

Cuando trato de ir abajo en la lista, los números cambian. Pero el valor de ellos no. Si alguien ha llegado el momento para comprobar hacia fuera y tal vez encontrar una solución que sería muy útil :)

aquí es el resto del código que podría ser importante en este caso:

#pragma mark - 
#pragma mark PickerView DataSource 

- (NSInteger)numberOfComponentsInPickerView: 
(UIPickerView *)pickerView 
{ 
return 2; 
} 

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent: (NSInteger)component 
{ 
if (component == 0) { 
    return [_convertFrom count]; 
} 
return [_convertTo count]; 
} 


- (NSString *) pickerView: (UIPickerView *)pickerView 
      titleForRow:(NSInteger)row 
     forComponent:(NSInteger)component 
{ 
if (component == 0) { 
    return [_convertFrom objectAtIndex:[pickerView selectedRowInComponent:0]]; 
} 
return [_convertTo objectAtIndex:[pickerView selectedRowInComponent:1]]; 
} 




#pragma mark - 
#pragma mark PickerView Delegate 
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row 
    inComponent:(NSInteger)component 
{ 
    float convertFrom = [[_convertRates objectAtIndex:[pickerView selectedRowInComponent:0]] floatValue]; 
float convertTo = [[_convertRates objectAtIndex:[pickerView selectedRowInComponent:1]] floatValue]; 
float input = [dollarText.text floatValue]; 
float to = convertTo; 
float from = convertFrom; 
float dollars = input; 
float result = to * from * dollars; 
float mtpaTilMtpaFloat = dollars * 1; 
NSString *resultString = [[NSString alloc] initWithFormat: 
          @"result = %.2f * %.2f = %.2f", from, to, result]; 
resultLabel.text = resultString; 

NSString *mtpaTilmtpa = [[NSString alloc ] initWithFormat: 
          @" %.2f MTPA = %.2f MTPA", dollars, mtpaTilMtpaFloat]; 



if (from == 1, to == 1) { resultLabel.text = mtpaTilmtpa; 
} 

Y por supuesto, dime si necesito mostrar más código para que puedas entenderlo. es la primera vez que uso este sitio web por cierto :)

Respuesta

3

no use selectedRowInComponent. No desea mostrar el valor que está seleccionado en todas sus filas. Solo use row

- (NSString *) pickerView: (UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component 
{ 
    if (component == 0) { 
     return [_convertFrom objectAtIndex:row]; 
    } 
    return [_convertTo objectAtIndex:row]; 
}