2

NSUserDefaultsを使用してスイッチのオン/オフを保存していますが、これまでのところ問題ありません。次のセッションでスイッチの位置を記憶します。

さて、わからないことへ。別のビューで同じスイッチ(同じ名前)を使用します。たとえば、最初のビューから押し込まれたフリップビューを使用します。最初のビューでスイッチを変更すると、フリップビューで自動的に変更されます。しかし逆に、フリップビューで変更しても、戻ったときに最初のビューでは変更されません。アプリケーションを再起動した場合にのみ、最初のビューも変更されます。

同時に変更されるようにこれを解決するにはどうすればよいですか?または、再起動せずに最初のビューを更新します。

4

2 に答える 2

3

最初のビューは再初期化されないため、更新されません。ViewControllers を使用している場合は、viewWillAppear でスイッチを更新できます (isViewLoaded の場合)。

于 2013-01-23T15:39:42.857 に答える
2

変更に関心のあるビューの変更を観察 する必要があります。NSUserDefaults

次のコードを使用して、変更を確認できます。

NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center addObserver:self
           selector:@selector(defaultsChanged:)  
               name:NSUserDefaultsDidChangeNotification
             object:nil];

defaultsChangedメソッドを実装します。

- (void)defaultsChanged:(NSNotification *)notification
{
    NSUserDefaults *defaults = (NSUserDefaults *)[notification object];
    id value = [defaults objectForKey:@"keyOfDefaultThatChanged"];
    self.something = [(NSNumber *)value intValue];    // For example.
}

ビューを閉じたときにオブザーバーを削除することを忘れないでください (おそらく でdealloc):

NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center removeObserver:self];
于 2013-01-23T15:49:01.277 に答える