保存分段控制器位置

时间:2017-10-17 11:49:27

标签: ios objective-c uisegmentedcontrol

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

我的代码如下:

- (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实际上正在保存正确的索引,因为从上面提供的方法我改变按钮样式后它会在关闭并再次打开应用程序后保持更改因为我可以看到事实但是分段控制器本身没有显示正确段。

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

1 个答案:

答案 0 :(得分:1)

在视图中加载了你应该添加代码来设置你保存的片段

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

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