Зарегистрируйте контроллер представления, который заботится о значении из значений по умолчанию, в качестве наблюдателя 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
- это обновленное строковое значение, которое вы также сохранили впо умолчанию.