-5

我希望我在 UISlider 中有 4 个值,并且我希望在加载应用程序时应该选择一个默认值。

我希望在加载时显示初始值。

      slider=[[UISlider alloc] initWithFrame:CGRectMake(290, 152, 160, 36)];
      slider.minimumValue=0;
      slider.maximumValue=3;
      [slider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventValueChanged];

滑块事件

     -(IBAction)sliderAction:(id)sender 
     {
          NSString*testing=[[NSString alloc] initWithFormat:@"%d",(int)slider.value];
          if([testing isEqualToString:@"0"])
          {
              sliderLabel.text=@"5 (gal/acre)";
              sliderValue=@"5";
          }
          else if([testing isEqualToString:@"1"])
          {
              sliderLabel.text=@"10 (gal/acre)";
              sliderValue=@"10";
          }
          else if([testing isEqualToString:@"2"])
          {
              sliderLabel.text=@"15 (gal/acre)";
              sliderValue=@"15";
          }
          else 
          {
              sliderLabel.text=@"20 (gal/acre)";
              sliderValue=@"20";          
          }    
    }
4

1 回答 1

0

如果您需要滑块能够选择离散值 0.0、1.0、2.0 或 3.0,您可能需要处理两个控制器事件:

[slider addTarget:self action:@selector(handleSliderValueChanged:) forControlEvents:UIControlEventValueChanged];
[slider addTarget:self action:@selector(handleSliderTouchUpInside:) forControlEvents:UIControlEventTouchUpInside];

前者需要控制值的变化,后者在用户移开手指后固定滑块销的位置。

要获得谨慎的滑块值,我们可以将其四舍五入:

- (float)roundedSliderValue:(UISlider *)slider
{
    return roundf([slider value]);
}

当用户移动滑块时,我们需要获取谨慎的引脚位置:

- (void)handleSliderValueChanged:(UISlider *)slider
{
    int idx = (int)[self roundedSliderValue:slider];

    switch (idx) {
    // update UI
    }
}

在使用完成移动滑块后,我们需要更正引脚位置并将值保存为默认值

- (void)handleSliderTouchUpInside:(UISlider *)slider
{
    float val = [self roundedSliderValue:slider]
    [slider setValue:val animated:YES];
    [[NSUserDefaults standardUserDefaults] setFloat:val forKey:@"SliderValue"];
}

您可以使用 将NSUserDefaults所选值存储为默认值并将其加载到viewDidLoad

- (void)viewDidLoad
{
    [super viewDidLoad];

    float sliderVal = [[NSUserDefaults standardUserDefaults] floatForKey:@"SliderValue"];
    [self.slider setValue:sliderVal];
}
于 2012-08-15T07:16:43.950 回答