0

アプリで検索機能を作成していますが、UISliderのコードを理解するのに問題があります。ストーリーボードにスライダーが作成され、接続されます。情報源として辞書の配列を持つ.plistがあります。辞書にはワインに関する情報が含まれています。


  • Sliderは、辞書のキー「Price」の値を表す必要があります。番号を選んだので、78,900000000001のようなものもあります。つまり、小数点以下2桁のフォーマットが必要です。

  • minimumValue =辞書の最小値。それほど複雑でない場合は、最も近い10に切り捨てられます(最小値= 67,90の場合、minimumValue = 60)。

  • maximumValue =最高値ですが、最も近い10に切り上げられます。

  • ユーザーがオプションの最低価格を設定するためのものであるため、デフォルトの位置はminimumValueである必要があります。

  • スライド時に70、75、80、85、90などの5つの数字でステップアップしたい


これまでのUISliderのコードは次のとおりです。

- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationItem.title = @"Search";

NSString *path = [[NSBundle mainBundle] pathForResource:@"Wines" ofType:@"plist"];
allObjectsArray = [[NSMutableArray alloc] initWithContentsOfFile:path];

minSlider.continuous = YES;
[minSlider setMinimumValue: ]; // Lowest value rounded down to closest 10
[minSlider setMaximumValue: ]; // Highest value rounded up to closest 10

[minSlider addTarget:self
           action:@selector(minValueChanged:) 
 forControlEvents:UIControlEventValueChanged];

minText.text = minSlider.minimumValue // <--- or something like that
}

- (void)minValueChanged:(UISlider*)sender
{
 // And something here for change of value and text field
minText.text = current slider value
}

これを終えるのを手伝ってくれませんか。私は質問する前に自分の研究から学んだことに基づいて始めました。:)

4

1 に答える 1

1

それはあなたのplistがどのように構成されているかに少し依存しますが、あなたは私たちに言っていません...私はそれが次のように見えると思います

<array>
  <dict>
    <key>name</key>
    <string>Bordeaux</string>
    <key>price</key>
    <real>75.40</real>
  </dict>
  <dict>
    <key>name</key>
    <string>Chardonnay</string>
    <key>price</key>
    <real>29.90</real>
  </dict>
</array>

これは、最小値と最大値を決定する方法です。

NSNumber *minValue = [allObjectsArray valueForKeyPath:@"@min.price"];
NSNumber *maxValue = [allObjectsArray valueForKeyPath:@"@max.price"];

これは、数値を丸める方法です。

float roundedDown = ((int)[minValue floatValue]/10)*10.0;
float roundedUp = ((int)[maxValue floatValue]/10)*10.0 +10;

スライダーの最小値は次のように設定します。

minSlider.minimumValue = [minValue floatValue];

これは、ラベルに5の倍数のみを表示させる方法です。

-(void)minValueChanged:(UISlider*)sender {
    minText.text = [NSString stringWithFormat:@"%.0f", 
       5.0 * ((int) (sender.value / 5) + 0.5)];
}
于 2012-08-02T01:18:49.280 に答える