2017-10-17 35 views
1

我面临的一个问题是,在关闭应用程序并再次打开应用程序后,我的分段控制器未保存位置。保存分段控制器位置

我的代码是按如下:

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

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

+0

和你在哪里把它设置为救指数? –

+0

在viewDidLoad中,您必须阅读userDefaults并将正确的索引设置为分段控件 – Kerberos

+0

您可以在实际使用“MySelectedButtonStyleKey”设置您的段控件的选定状态的地方发布代码吗? –

回答

1

鉴于没有加载,你应该将代码添加到您的设置保存段

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

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

非常感谢你,我的问题解决了。 –

+0

接受答案将是伟大的然后:) –