滑块/文本框交换数据

时间:2011-08-23 15:19:59

标签: iphone objective-c ios xcode

我有一个UISlider,附有两个文本框。把它想象成一个小费计算器。考虑一下收据:它有一个位置供您提示,然后是最终值。让我们在混音中加一个滑块。

现在我们有两个文本字段(提示百分比和提示量)和滑块。当滑块移动时,它调用一个方法,根据该人用滑块选择的值更新两个文本框。

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

-(void)sliderValueChanged:(id)sender
{
    tipPercent.text = [NSString stringWithFormat:@"%d", (int)slider.value];
    tipPercentDbl = (int)slider.value;//tipPercent as Dbl
    tipDbl = (totalDbl * (tipPercentDbl/100));//tip as Dbl
    tip.text = [NSString stringWithFormat:@"%.2f", tipDbl];
    tipPercent.text = [NSString stringWithFormat:@"%.0f", tipPercentDbl];
    totalWithTipDbl = (totalDbl+tipDbl);
    totalWithTip.text = [NSString stringWithFormat:@"%.2f", totalWithTipDbl];
}

这完美无缺。我现在要做的事情(并且我很难搞清楚)是如何在文本字段更改时更改值。即有人手动输入自己的提示,如何更新滑块和提示百分比;或者,如果有人手动输入提示百分比,如何更新滑块和提示值。

最好的方法是什么?

1 个答案:

答案 0 :(得分:2)

这很容易。我不知道您使用的所有变量,因此在您尝试代码时请替换自己的变量。当键盘退出时,请调用方法:

- (void)updateTheSliderAndTipPercentage; {
  float percentage = tipTheyEntered / totalCost;
  [slider setValue:percentage animated:YES];
  percentage *= 100; // This is if you want the percentage in [0,100].
  tipPercent.text = [NSString stringWithFormat:@"%f", percentage];
}

编辑:为了知道何时调用此方法,请进行简单检查:

- (BOOL)textFieldShouldReturn:(UITextField *)textField; {
  if(textField == tipTheyEnteredTextField){
    [self updateTheSliderAndTipPercentage];
  }
}

希望有所帮助!