0

我有一个 uiviewcontroller,它在 NSUserDefault 中保存了一些 NSString。当我以这种方式回去时

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

到另一个必须使用保存在 NSUserDefault 中的 NSString 的 uiviewcontroller。在 viewWillApper 中,它会加载这个 nsstring。当我第一次启动应用程序时,它会正确加载数据,如果我从另一个视图返回。我能做些什么?

4

1 回答 1

0

将关心默认值的视图控制器注册为 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您还存储在默认值中的更新字符串值在哪里。

于 2011-11-06T14:25:16.407 回答