2012-10-12 16 views
5

Moja aplikacja to konwerter z wielokomponentowym kołem selektora. Jest przeznaczony do konwersji niektórych zmiennych. Liczby, które możesz zobaczyć, są przeznaczone tylko do testów, naprawdę nic ważnego.UIPickerView pokazuje złe tytuły

- (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]; 

} 

Mam mały problem z liczbami wyświetlanymi podczas testowania aplikacji w symulatorze iOS 6. Jak widać tutaj:

Screenshot

http://imgur.com/q4uxm

Kiedy staram się iść w dół listy, zmiana numerów. Ale ich wartość nie ma. Jeśli ktoś ma czas, aby to sprawdzić i być może znaleźć rozwiązanie byłoby bardzo pomocne :)

tutaj jest reszta kodu, które mogą być istotne w tym przypadku:

#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; 
} 

I oczywiście, powiedz mi, czy muszę wyświetlić więcej kodu, abyś mógł go zrozumieć. jego pierwszy raz korzystam z tej witryny btw :)

Odpowiedz

3

Nie używaj selectedRowInComponent. Nie chcesz wyświetlać wartości wybranej we wszystkich wierszach. Po prostu użyj row

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