これを行うには、NSNotifications を使用します。
3 番目のタブは構成設定であるため、これらを保存する可能性が高いNSUserDefaults
ため、 を使用してメソッドNSUserDefaultsDidChangeNotification
でこれを監視しviewDidLoad
、reloadData コードを独自のメソッドに移動します。
- (void)viewDidLoad
{
[super viewDidLoad];
NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
[notificationCenter addObserver:self
selector:@selector(userDefaultsChanged:)
name:NSUserDefaultsDidChangeNotification
object:nil];
[self reloadData];
}
userDefaultsChanged:
これで、デフォルトが変更されるたびにメソッドの呼び出しがトリガーされます。次のようにメソッドを追加します。
- (void)userDefaultsChanged:(NSNotification *)notification
{
[self reloadData];
}
- (void)viewDidUnload
{
[super viewDidUnLoad];
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
編集:特定のデフォルト値を監視する代替方法
[[NSUserDefaults standardUserDefaults] addObserver:self
forKeyPath:@"SomeDefaultKey"
options:NSKeyValueObservingOptionNew
context:NULL];
- (void)observeValueForKeyPath:(NSString *) keyPath ofObject:(id) object change:(NSDictionary *) change context:(void *) context
{
if([keyPath isEqual:@"SomeDefaultKey"])
{
// Do Something
}
if([keyPath isEqual:@"SomeOtherKey"])
{
// Do Something else
}
}