iOS开发之Settings Bundle的使用

作者: ChinaGoodStaff | 来源:发表于2016-08-15 17:06 被阅读1198次

在Android手机上, 在某个程序里,通过按Menu键,一般都会打开这个程序的设置,而在iOS里,系统提供了一个很好的保存程序设置的机制。就是使用Settings Bundle。

在按了HOME键的情况下,在第一页的图标中找到设置,会看到程序的设置都在这里。那如何添加自己的程序的设置项呢?

1.添加设置项

默认情况下,新建的项目程序是没有设置项的。
在项目里选择创建新文件,选择Resource 中的Settings Bundle,创建。

419AD41B-D78E-416F-8455-6FA35F29E5DB

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

设置页面 settings bundle 默认

这样我们就添加了成功了。
可是,令人疑惑的事情发生了,当我再次运行程序时,程序设置页面不再有我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

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

选中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];
保存结果展示

相关文章

网友评论

    本文标题:iOS开发之Settings Bundle的使用

    本文链接:https://www.haomeiwen.com/subject/dtpusttx.html