将关心默认值的视图控制器注册为 NSUserDefaultsDidChangeNotification 的观察者。当您收到通知时,从默认值中获取值并使用它做任何您需要的事情。
如果您只是在其中设置字符串的模态视图控制器,并且它是需要知道新值的父视图控制器,那么您可以在父视图控制器上拥有一个属性并将其设置为您的模态视图控制器被解雇。
我假设您在那里的示例代码来自您的模态视图控制器 - 这对呈现视图控制器没有影响(您在关闭它时在模态控制器上调用 viewWillAppear,这是一个坏主意)并且不会调用 viewWillAppear视图控制器已关闭模式视图控制器。
要执行我的第二个建议,请在您的父视图控制器的标题中:
@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
您还存储在默认值中的更新字符串值在哪里。