6

I have a UISegmentedControl that has 6 segments which I created in Interface Builder. I am calling the following method on value changed:

-(IBAction)segmentedChartButtonChanged:(id)sender
{
    switch (self.segmentedChartButton.selectedSegmentIndex) {
        case 0:
            NSLog(@"5d selected. Index: %d", self.segmentedChartButton.selectedSegmentIndex);
            break;
        case 1:
            NSLog(@"3m selected. Index: %d", self.segmentedChartButton.selectedSegmentIndex);
            break;
        default:
            break;
    }
}

Whenever I change the segments, the selectedSegmentIndex is always 0. Why is this?

Sheehan Alam
  • 60,111
  • 124
  • 355
  • 556

3 Answers3

20

It is very likely that the IBOutlet isn't connected. Check that. You can also use the sender that is passed to the method.

UISegmentedControl * segmentedControl = (UISegmentedControl *)sender;
switch (segmentedControl.selectedSegmentIndex) {
    ....
Deepak Danduprolu
  • 44,595
  • 12
  • 101
  • 105
4

hi try like this it will work

-(IBAction)segmentedChartButtonChanged:(id)sender
 {
 UISegmentedControl *segment=(UISegmentedControl*)sender;
switch (segment.selectedSegmentIndex) {
    case 0:
        NSLog(@"5d selected. Index: %d", self.segmentedChartButton.selectedSegmentIndex);
        break;
    case 1:
        NSLog(@"3m selected. Index: %d", self.segmentedChartButton.selectedSegmentIndex);
        break;
    default:
        break;
}

}

ajay
  • 3,245
  • 4
  • 31
  • 59
0

Take an outlet for UISegmentedControl and handle with that like this,

if (self.paymentSegmentButton.selectedSegmentIndex ==0)
{
    NSLog(@"first view ");

}
else
{
    NSLog(@"payment initiation");
    addVC = [[UIStoryboard storyboardWithName:@"Main" bundle:nil]instantiateViewControllerWithIdentifier:@"secondView"];

    [self.navigationController pushViewController:addVC animated:YES];

       }

I hope it helps someone.

halfer
  • 19,824
  • 17
  • 99
  • 186
Narasimha Nallamsetty
  • 1,215
  • 14
  • 16