保存分段控制器位置

Saving segmented controller position

我遇到一个问题,即我的分段控制器在关闭应用程序并再次打开后没有保存其位置。

我的代码如下:

- (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];
    }
}

有趣的是,NSUserDefaults 实际上保存了正确的索引,因为根据我上面提供的方法,如果我更改按钮样式,它会在关闭和再次打开应用程序后保持更改,因为我可以看到它,但分段控制器本身不是显示正确的段。

我不确定为什么会发生这种情况,因为每次分段更改后我都在同步,但分段控制器仍保持其默认位置。

鉴于已加载您应该添加代码来设置您保存的段

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

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