2017-10-17 73 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

接受答案將是偉大的然後:) –