2012-10-12 19 views
5

私のアプリはマルチコンポーネントピッカーホイールを備えたコンバータです。いくつかの変数を変換するために作られています。あなたが見ることができる数字は、テストのためのものであり、何も重要ではありません。UIPickerViewは間違ったタイトルを表示します

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

} 

私はiOS 6シミュレータでアプリをテストするときに表示される数字に小さな問題があります。あなたがここに見ることができるように:

Screenshot

http://imgur.com/q4uxm

を私はリストを下に移動しようとすると、数字が変更されます。しかし、彼らの価値はありません。誰かがそれをチェックアウトし、多分それは非常に参考になる解決策を見つけるために時間を持っている場合:)ここ

は、この場合には重要であるかもしれないコードの残りの部分である :

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

そして、もちろん、あなたが理解できるようにもっと多くのコードを表示する必要があるかどうかを教えてください。私の初めてのこのウェブサイトを使用してbtw :)

答えて

3

selectedRowInComponentを使用しないでください。あなたはすべての行で選択された値を表示することを心配していません。ちょうど使用するrow

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