5

私のアプリは、多成分ピッカーホイールを備えたコンバーターです。いくつかの変数を変換するために作られています。表示される数値はテスト用であり、特に重要なものではありません。

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

}

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

スクリーンショット

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

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

4

1 に答える 1

3

使用しないでくださいselectedRowInComponent。すべての行で選択されている値を表示する必要はありません。使用するだけrow

- (NSString *) pickerView: (UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
{
    if (component == 0) {
        return [_convertFrom objectAtIndex:row];
    }
    return [_convertTo objectAtIndex:row];
}
于 2012-10-12T21:57:22.700 に答える