2017-10-17 6 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を読み込み、正しいインデックスをsegmentedcontrolに設定する必要があります – 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

答えを受け入れると素晴らしいだろう:) –

関連する問題