Christian Gossain
Christian Gossain

Reputation: 5972

How can I create and display a UISlider programmatically in iOS?

I found the code below in the Apple documentation and added it to my viewDidLoad method but the slider doesn't appear when I run the code.

CGRect frame = CGRectMake(0.0, 0.0, 200.0, 10.0);
UISlider *slider = [[UISlider alloc] initWithFrame:frame];
[slider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventValueChanged];
[slider setBackgroundColor:[UIColor clearColor]];
slider.minimumValue = 0.0;
slider.maximumValue = 50.0;
slider.continuous = YES;
slider.value = 25.0;

Upvotes: 40

Views: 33314

Answers (3)

Rajesh Loganathan
Rajesh Loganathan

Reputation: 11217

Try this Code:

Create a new slider

-(IBAction)mySlider
{ 
    CGRect frame = CGRectMake(0.0, 0.0, 200.0, 10.0);
    UISlider *slider = [[UISlider alloc] initWithFrame:frame];
    [slider addTarget:self action:@selector(sliderAction:) forControlEvents:UIControlEventValueChanged];
    [slider setBackgroundColor:[UIColor clearColor]];
    slider.minimumValue = 0.0;
    slider.maximumValue = 50.0;
    slider.continuous = YES;
    slider.value = 25.0;
    [self.view addSubview:slider];
}

Slider Actions

-(void)sliderAction:(id)sender
{
    UISlider *slider = (UISlider*)sender;
    float value = slider.value;
    //-- Do further actions
}

Upvotes: 23

DontKnow
DontKnow

Reputation: 408

Adding to the view via [self.view addSubview:slider] AS PREVIOUS MENTIONED - is essential.

wasn't visible FOR ME at : CGRect frame = CGRectMake(0.0, 0.0, 200.0, 10.0);

You should probably drop it down a bit and maybe get it off the left margin.

perhaps? CGRect frame = CGRectMake(5.0, 10.0, 200.0, 10.0);

For ios 6 and later you should really add this to view did load as well (so you can see it - even if you lowered the frame)

  if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1)
  {
      self.edgesForExtendedLayout=NO;
  }

Upvotes: 0

Michal
Michal

Reputation: 4875

You need to add the slider into your view hierarchy. Add [self.view addSubview:slider]; and it should work.

Upvotes: 25

Related Questions