three から出力を受け取る 3 つのラベルがありますUISliders
。セグメント化されたコントロールがタッチされると、結果が計算され、4 番目のラベルに配置されます。
セグメント化されたコントロールに再度触れずにスライダーの値の 1 つが変更された場合、結果を更新するにはどうすればよいですか?
three から出力を受け取る 3 つのラベルがありますUISliders
。セグメント化されたコントロールがタッチされると、結果が計算され、4 番目のラベルに配置されます。
セグメント化されたコントロールに再度触れずにスライダーの値の 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];
}
}
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;
}