Settings Bundle是应用程序中的一组特殊文件,用于告诉ios自带的settings应用,该应用程序希望通过Settings应用来收集程序参数。主要用于
1、应用程序有少量的数据用于保存,并且数据的格式很简单,都是普通的字符串和标量类型的值(如:用户名和密码)
2、应用程序的各种配置(如:是否打开音效,是否使用震动等)。
好处:省去了程序员自己写页面,节省了开发时间。
下面就开始直接步骤了:
1、创建工程SettingBundle,并添加SettingsBundle文件,如下图所示:
创建完后的工程目录如下图:其中en.lproj为国际化时用的,Root.plist文件是设置项的设置文件
2、运行程序,然后进入系统的设置里会发现有一个settingBundle的设置项,如下图
第一张图是系统根据应用名来自动生成的,第二张图是系统根据我们创建的settings.bundle中得Root.plist文件生成的。
3、接下来看一下,Root.plist文件的真面目,如下图
该文件中有两个分组:
Preference Items :该节点是一个数组,用于定义设置界面
Strings Filename:该节点为string类型,值为Root;作用是告诉系统到*.lproj文件夹中找Root.strings文件,作为国际化资源文件。
preference items中的每个item类型有如下几种:
group:分组、MultiValue为多选、Slider为滑块控件、textField为输入框,title为Label,Toggle Switch 为开关;
创建完item后要选择Type,Type有如下几种:
基本上和上图一致,只是多了一个Child Pance表示可以自定义下一个设置页,其中有一个item为File值设为settings plist文件的名字。
注意:
1、每个item里的Identifier一定要设置上值,否则不显示。并且Identifier的值会作为key保存到Libray/Preference文件夹下的plist文件中,程序调用。Child Pance是没有Identifier选项的。
2、给setting中的slider设置image,或者给Child Pance设置File都不能直接把文件直接加到工程中,而需要加到Settings.bundle中。(右键工程中的Settings.bundle ->show in Finder ->显示包内容->复制资源文件)
下面来看一个具体例子的配置:
1、Root.plist文件的配置
custom.plist文件
2、运行效果图
3、值存储的plist(生成的plist文件存在Libray/preference下)
此图中的key就是Root.plist文件中的 Identifier
注意:1、多个plist文件(多个设置页)的值,都会存在此plist文件中
2、此plist文件就是 NSUserDefaults 存的数据的plist文件