Как загрузить uiviewcontroller после [self dismissModalViewControllerAnimated: YES]; - PullRequest
0 голосов
/ 06 ноября 2011

У меня есть контроллер uiview, который сохраняет некоторую строку NSString в NSUserDefault. Когда я вернусь таким образом

-(IBAction)goBack:(id)sender{
    [self dismissModalViewControllerAnimated:YES];
    [self viewWillAppear:YES];
}

другому контроллеру uiview, который должен использовать этот NSString, сохраненный в NSUserDefault. В viewWillApper он загружает эту строку. Когда я запускаю приложение в первый раз, оно корректно загружает данные, если я возвращаюсь из другого представления, нет. Что я могу сделать?

1 Ответ

0 голосов
/ 06 ноября 2011

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

...