iOS:如何创建“用户偏好设置”功能

3
我有一个基于UINavigationController的应用程序; 我希望添加一个“设置”页面,用户可以在其中设置一些功能,例如语言和其他偏好设置。当前,我希望在其中具有设置字段的UIViewController位于RootViewController的2个级别下(即有一个“主视图” >>您单击一个按钮并进入另一个UIViewController,从那里您应该能够输入Setting UIViewController)。
我不清楚我应该如何保存这些数据以及如何在应用程序加载时调用它们。
我阅读了一些关于NSUserDefaults和Singleton的博客,但我不清楚应该如何使用它们。
我应该在AppDelegate或MySettingsViewController(我正在创建的UIViewController)上创建稍后将维护用户首选项的数据属性?
我应该使用单例属性,如果是这样,在哪里应该创建它?
当你说“ Singleton”时,你实际上是指创建静态属性吗?
是否有另一种方式在两个未直接连接的控制器之间进行通信(我可以通过中间的UIViewController将数据从“底部”ViewController传递到RootViewController,但这似乎很奇怪和无效)?
任何方向/教程都将不胜感激!
2个回答

12

一定要使用NSUserDefaults。它很棒,苹果公司也推荐使用。

要设置一个设置项:

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"Setting 1"];

你也可以存储其他东西,例如文本、数字等等。比一个简单的布尔值更加强大。

要检查设置:

if ([[NSUserDefaults standardUserDefaults] boolForKey:@"Setting 1"]) {
    //ok, do the thing here
}

InAppSettingsKit在幕后使用NSDefaults。何必重复造轮子呢? - coneybeare
我没有看到其他评论,但是如果你只想做一件事情,而不是下载工具包,那么只需要两行代码。NSUserDefaults可以用于许多其他事情,而不仅仅是设置。例如,记住应用内购买。 - Jack Humphries
杰克,你之前建议的东西我应该怎么使用呢?我有几个问题需要问一下。 - Ohad Regev
好的,我尝试了一下并弄清楚了如何保存和检索数据。谢谢你! 现在,我不清楚如何刷新其他应该受到影响的UIViewControllers中的数据。你能看一下我之前发布的另一个问题吗?http://stackoverflow.com/questions/6912706/ios-how-to-refresh-a-uiviewcontroller-after-popping-its-child-uiviewcontroller - Ohad Regev
[userDefauls synchronize]; - melanke
显示剩余2条评论

4
我建议使用http://inappsettingskit.com/,而不是自己开发。我在几乎所有的应用程序中都使用它,并且它可以完美地处理应用程序设置,非常适合这种情况。

感谢提供参考!我一定会去查看的。 - Ohad Regev
精彩的推荐。 - Alex Zavatone

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接