NSUserDefaultsDidChangeNotification のオブザーバーとして、デフォルトの値を気にするビュー コントローラーを登録します。通知を受け取ったら、デフォルトから値を取得し、必要なことを行います。
文字列を設定しているモーダルView Controllerを単に提示していて、新しい値を知る必要があるのは親View Controllerである場合、親View Controllerにプロパティを設定し、それをモーダルとして設定することができますビュー コントローラーは閉じられます。
そこにあるサンプル コードは、モーダル ビュー コントローラーからのものであると想定しています。モーダルView Controllerを閉じたときのView Controller。
私の2番目の提案を行うには、親View Controllerのヘッダーで:
@property (nonatomic,copy) NSString *stringFromDefaults;
.m ファイル内:
@synthesize stringFromDefaults;
現在値を取得しているviewWillAppearで、代わりにプロパティに割り当てます。
self.stringFromDefaults = [[NSUserDefaults standardUserDefaults] stringForKey:@"stringValue"];
モーダル ビュー コントローラーから:
-(IBAction)goBack:(id)sender
{
[(ParentViewController*)self.parentViewController setStringFromDefaults:newStringValue];
[self dismissModalViewControllerAnimated:YES];
}
newStringValueデフォルトにも保存した更新された文字列値はどこにありますか。