在Android手机上, 在某个程序里,通过按Menu键,一般都会打开这个程序的设置,而在iOS里,系统提供了一个很好的保存程序设置的机制。就是使用Settings Bundle。
在按了HOME键的情况下,在第一页的图标中找到设置,会看到程序的设置都在这里。那如何添加自己的程序的设置项呢?
1.添加设置项
默认情况下,新建的项目程序是没有设置项的。
在项目里选择创建新文件,选择Resource 中的Settings Bundle,创建。

运行。按home键,打开设置,看到设置里多了一项,“中国好编程”。这就为程序添加了一个设置。


这样我们就添加了成功了。
可是,令人疑惑的事情发生了,当我再次运行程序时,程序设置页面不再有我settings bundle的设置选项了,这是什么鬼,是程序出现了什么问题吗?
解决办法:双击home键弹出多任务列表,从多任务列表中移除调试的app和系统设置app,再进入系统设置app就可以了
2.设置的控件
默认的生成的设置项里有这个几个控件。
设置控件 | 类型 |
---|---|
文本框 | PSTextFieldSpecifier |
文字 | PSTitleValueSpecifier |
开关控件 | PSToggleSwitchSpecifier |
Slider | PSSliderSpecifier |
Multivalve | PSMultiValueSpecifier |
Group | PSGroupSpecifier |
子面板 | PSChildPaneSpecifier. |
3.编辑设置项的文件
展开Settings.bundle,其中包含一个Root.plist。Settings程序中的显示项就是从Root.plist中获取的。单击Root.plist以打开它

在空白处单击,选中Show Raw Keys/Values:

现在你可以通过修改或者删除原有的自己重新建自己的设置项
这里我们将原来的都删除吧。新建成这样:

对应的plist源文件是这样的:如果你觉得自己手工输入这些项很慢,可以把下面的源文件拷贝到Root.plist里,用源代码打开方式就可以编辑了。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PreferenceSpecifiers</key>
<array>
<dict>
<key>Type</key>
<string>PSGroupSpecifier</string>
<key>Title</key>
<string>个人信息</string>
<key>Key</key>
<string></string>
</dict>
<dict>
<key>Type</key>
<string>PSTextFieldSpecifier</string>
<key>Title</key>
<string>姓名</string>
<key>Key</key>
<string>username</string>
</dict>
<dict>
<key>Type</key>
<string>PSMultiValueSpecifier</string>
<key>Values</key>
<array>
<string>swimming</string>
<string>climb</string>
<string>bike</string>
</array>
<key>Title</key>
<string>爱好</string>
<key>Titles</key>
<array>
<string>游泳</string>
<string>爬山</string>
<string>骑行</string>
</array>
<key>Key</key>
<string>aihao</string>
<key>DefaultValue</key>
<string>bike</string>
</dict>
<dict>
<key>FalseValue</key>
<string>NO</string>
<key>TrueValue</key>
<true/>
<key>DefaultValue</key>
<true/>
<key>Type</key>
<string>PSToggleSwitchSpecifier</string>
<key>Title</key>
<string>是否成年</string>
<key>Key</key>
<string>maritalStatus</string>
</dict>
<dict>
<key>Type</key>
<string>PSGroupSpecifier</string>
<key>Title</key>
<string>等级</string>
<key>Key</key>
<string></string>
</dict>
<dict>
<key>DefaultValue</key>
<integer>5</integer>
<key>MaximumValue</key>
<integer>10</integer>
<key>MinimumValue</key>
<integer>1</integer>
<key>Type</key>
<string>PSSliderSpecifier</string>
<key>Title</key>
<string>等级</string>
<key>Key</key>
<string>levelState</string>
</dict>
</array>
<key>StringsTable</key>
<string>Root</string>
</dict>
</plist>
这时候运行,在来到设置项看:

4.实现读取设置和保存代码
关键是通过:NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
代码获取设置项的NSUserDefaults值,然后通过key获取设置的内容和保存设置内容
获取内容:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *name = [defaults objectForKey:@"username"];
NSLog(@"userName:%@",name);

保存内容:
[defaults setObject:@"ao ba ma" forKey:@"username"];
[defaults synchronize];

网友评论