0

three から出力を受け取る 3 つのラベルがありますUISliders。セグメント化されたコントロールがタッチされると、結果が計算され、4 番目のラベルに配置されます。

セグメント化されたコントロールに再度触れずにスライダーの値の 1 つが変更された場合、結果を更新するにはどうすればよいですか?

4

2 に答える 2

1

まず、スライダーの値を変更するためのイベントを追加します。

[mySlider addTarget:self 
             action:@selector(sliderValueChanged:) 
   forControlEvents:UIControlEventValueChanged];

スライダーごとにこれを行います。

あなたのsliderValueChanged:機能では:

- (void)sliderValueChanged:(id)sender {
    [self calculateResult];
}

calculateResult計算を行い、結果ボックスを設定できます。

セグメント化されたコントロールが最初に何らかの状態にあることを確認する必要がある場合は、if句を追加するだけですsliderValueChanged:

- (void)sliderValueChanged:(id)sender {
    if ([mySegmentedControl selectedSegmentIndex] == 1) {
        [self calculateResult];
    }
}
于 2012-06-22T17:51:29.307 に答える
0

mopsled's answerを使用して機能するものを思いつきました:

if (UIControlEventValueChanged && mySeg.selectedSegmentIndex == 0) {
    float floatResult = [f3.text floatValue]-[f2.text floatValue];
    float coldFactor = [fcold.text floatValue]*floatResult;
    float result = [f1.text floatValue]+coldFactor;

    NSString *tpResult = [[NSString alloc] initWithFormat:@"%.0f",result];
    f4Result.text = tpResult;             
}
于 2012-07-14T22:31:12.257 に答える