ios - 从多个 View 访问 NSUserDefault

标签 ios xcode views nsuserdefaults

我正在尝试从多个 View 访问一个名为 prefs 的 NSUserDefault。我在一个 View 中分配首选项,但我不知道如何访问它而不只是在第二个 View 中重新分配一个新的 NSUserDefault。

另外,我的操作系统是ios。

这是我的 FlipSideViewController 函数:

我的 FlipSideViewController 中的函数:'NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];

- (IBAction) changeRate:(id)sender {

if (rate.selectedSegmentIndex == 1){
    [prefs setInteger:1 forKey:@"myRate"];//save

}
else if (rate.selectedSegmentIndex == 2){
    [prefs setInteger:2 forKey:@"myRate"];//save
}
[[NSUserDefaults standardUserDefaults] synchronize];
};

这是 MainViewController 函数:
 NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
// [prefs setValue: @"0" forKey: @"myRate"];

if (!([prefs valueForKey: @"myRate"])){
    [prefs setInteger:0 forKey: @"myRate"];
}

[prefs setInteger:2 forKey: @"myRate"];

int rateOption = [[prefs valueForKey: @"myRate"] intValue];

if (rateOption == 1)
{
    dayOrHourly.text = @"% of Day:";
    percentOrHours.hidden = YES;
    hours.hidden = YES;
    dayPercentage.hidden = NO;
}
else if (rateOption == 2)
{
    dayOrHourly.text = @"# of Hours:";
    percentOrHours.hidden = NO;
    dayPercentage.hidden = YES;
}

最佳答案

拥有多个不同 View 的首选项应该不是问题。打电话

[prefObject synchronize];

当您在一个 View 中修改 NSUserDefaults 的一个实例或尝试从另一个 View 访问它们时,您会没事的。

但是如果你真的想在所有 View Controller 之间共享一个对象,请将它放在你的 App Delegate 中。 [我必须说,我不明白这一点......]

关于ios - 从多个 View 访问 NSUserDefault,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6208004/

相关文章:

django - 在没有太多复制/粘贴的情况下很好地重定向错误?

c# - MVVM Light - 多个 ViewModel(并将它们连接起来)

ios - Mjpeg 在最近的 Mobile Safari 上损坏了?

ios - 如何检测 iOS UIWebView 中的重定向

ios - 阴影仅在左侧和上侧 mask 边界。是什么原因造成的?

ios - Storyboard未在 Xcode 11 中删除

views - Controller /模型/ View 的 Laravel 命名约定是什么?

iphone - 单击按钮时颜色变化

ios - UIScrollView 框架被自动移动

objective-c - 如何在 UIView 中放置小图像