【问题标题】:iOS controlling a slider value and text label value with a stepperiOS 使用步进器控制滑块值和文本标签值
【发布时间】:2013-05-06 03:44:37
【问题描述】:

我已经有一个控制文本标签输出的滑块。

-(IBAction)mySlider:(UISlider *)sender
{
    _myTextLabel.text = [NSString stringWithFormat:@"%i", (int) sender.value];
}

但是,我还希望步进器能够改变滑块的位置。因此,如果滑块已设置为 50,并且文本标签显示为 50,我希望步进器递增到 51、52、53 等。有人知道执行此操作的代码吗?谢谢!

【问题讨论】:

  • 你有什么问题?
  • 所以如果我没看错的话,你非常希望 UISlider 更新标签,然后步进器更新滑块?
  • 是的,没错,我的问题是执行此操作的代码是什么...基本上,如果用户尝试选择特定数字,他们可以使用滑块作为粗调,然后使用增量器得到确切的数字

标签: ios uilabel uislider uistepper


【解决方案1】:

您需要保留UISlider 的参考。使用 valueChanged 事件为 UIStepper 创建一个处理程序。

步进器和滑块都需要做的一些设置

将步进器和滑块的最小值和最大值分别设置为 0 和 100。设置步进器的步长为1。设置步进器和滑块的默认值相同。

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.slider.minimumValue = 0;
    self.slider.maximumValue = 100;

    self.stepper.minimumValue = 0;
    self.stepper.maximumValue = 100;
    self.stepper.stepValue = 1;

    self.slider.value = 10;
    self.stepper.value = 10;

}

- (IBAction)stepperValueChanged:(UIStepper *)sender {

    [self.slider setValue:sender.value];

    self.myTextLabel.text = [@((int)sender.value) stringValue];

}

- (IBAction)sliderValueChanged:(UISlider *)sender {

    [self.stepper setValue:sender.value];

    self.myTextLabel.text = [@((int)sender.value) stringValue];
}

【讨论】:

  • 感谢这段代码,但我有一个快速的新手问题:如何为 UISlider 提供参考?每次我为滑块创建方法时,我都无法在 { } 大括号之外引用它们,而且我不知道如何指向它们
  • 你所要做的就是在你的 .h 文件中,做 @property (nonatomic, retain) UISlider *;在结尾和 } 之间,然后在你的 .m 文件中,在实现 下键入 synthesize ;这将创建要使用的 getter/setter 函数,以便您可以在 {} 之外使用它们。实现并在它们前面合成两个@
  • 只需从 IB 连接控件,给控件一个属性,用 IBOutlet 连接它们。以上stepper、min、max、step的设置可以从IB自己设置。
  • 请注意,如果您想让滑块和步进器保持同步,则每当其中一个发生变化时,您都需要更新相反的一个。 (即当滑块改变时,更新步进器,反之亦然。)
  • @jake9115 我已经完全更新了答案。请看。
猜你喜欢
  • 1970-01-01
  • 2018-04-17
  • 1970-01-01
  • 2020-02-18
  • 1970-01-01
  • 1970-01-01
  • 2016-05-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多