Aleksandrs Muravjovs
Aleksandrs Muravjovs

Reputation: 173

Saving segmented controller position

I am facing an issue that my segmented controller is not saving its position after closing the application and opening it again.

My code is as per below:

- (void)viewDidLoad {
    [super viewDidLoad];

    [self.segmentedControlButtonStyle addTarget:self action:@selector(changeButtonStyle:) forControlEvents:UIControlEventValueChanged];

}

- (IBAction)changeButtonStyle:(id)sender {

    NSUserDefaults *sharedDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.number.application"];
    NSInteger selectedSegmentedControlerIndex = self.segmentedControlButtonStyle.selectedSegmentIndex;

    if (sharedDefaults) {
        [sharedDefaults setInteger: selectedSegmentedControlerIndex forKey:@"MySelectedButtonStyleKey"];
        [sharedDefaults synchronize];
    }
}

The funny thing is that NSUserDefaults actually is saving correct index because from method I provided above if I change button style it will keep changed after closing and opening application again because I can see it by fact but segmented controller itself is not showing correct segment.

I am not sure why this is happening because I am synchronizing after each segment change but still segmented controller keeps its default position.

Upvotes: 1

Views: 136

Answers (1)

Lu_
Lu_

Reputation: 2685

in view did load you should add code to set your saved segment

NSUserDefaults *sharedDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.number.application"];
int mySegment = [sharedDefaults integerForKey:@"MySelectedButtonStyleKey"];

if(mySegment) {
    self.segmentedControlButtonStyle.selectedSegmentIndex = mySegment;
}

Upvotes: 1

Related Questions