0

我正在尝试使用 NSUserDefaults 类来保存一堆文本标签信息。具体来说,我有一个带有按钮和标签的视图。单击按钮时,它将使用“模态”连接将用户带到另一个视图。在第二个视图中,用户使用滑块设置值。单击时,单个按钮会切换回第一个视图,也使用“模态”连接。我想插入一段代码,以便当用户在第二个视图上使用滑块并单击按钮时,它将第一个视图上的文本标签更新为滑块的值。

这是我在第二个视图中的按钮方法下放置的代码:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"myValue" forKey@"myKey"];
[defaults synchronize];
_textLabelOnFirstView.text = [defaults stringForKey:@"myKey"];

另外,对于“viewDidLoad”方法下的同一个视图控制器,我放了以下代码:

NSUserDefaults *defaults = [NsUserDefaults standardUserDefaults];
_textLabelOnFirstView.text = [defaults stringsForKey:@myKey"];

然而,情况是这样的:打开第一个视图后,我单击按钮进入第二个视图。在第二个视图中,我将滑块滑动到 100,然后单击按钮。该按钮将我带回第一个视图,但标签从未更新,也没有说 100。如果我关闭应用程序并重新打开,标签仍然是错误的。然而!如果我单击按钮转到第二个视图,然后单击第二个视图的按钮返回到第一个视图(即使不调整滑块),我现在在文本标签中看到 100 的值。

任何人都可以建议如何更改我的代码,以便在用户从第二个视图转换回第一个视图时立即使用滑块的值更新第一个视图的文本标签?谢谢!

4

1 回答 1

0

正如马特 G 指出的那样,使用 ViewWillAppear 或 ViewDidAppear 而不是 ViewDidLoad 正确地解决了我的问题,每次视图出现时都被调用,而不是它的第一个实例

于 2013-05-06T03:13:24.523 回答