我使用NSUserDefaults开启/关闭开关,到目前为止还不错。它会记住下一个会话中的切换位置。
现在对我不理解的事情。 我在另一个视图中使用相同的开关(具有相同的名称),让我们说一个从第一个视图推入的翻转视图。如果我在第一个视图中更改了开关,它将在翻转视图中自动更改。 但反过来说,如果我在翻转视图中更改它,当我回去时它在第一个视图中没有改变。仅当我重新启动应用程序时,第一个视图也会更改。
如何解决此问题同时进行更改?或者刷新第一个视图而不需要重新启动。
答案 0 :(得分:3)
您的第一个视图未刷新,因为它未再次初始化。如果使用ViewControllers,则可以在viewWillAppear中更新交换机(如果是isViewLoaded)。
答案 1 :(得分: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];