相关资料:https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/UserDefaults/Introduction/Introduction.html
1、与工程中添加Resource->Setting Bundle
创建
文件说明:
en.lproj为多语言配置目录该目录的strings文件只有在IOS系统语言环境与文件夹想符才能读取。
Root.plist为Setting页面的根目录配置文件。
此时编译运行后已经能够看到通用设置中对应程序的Setting。
2、Setting页面制作Root.plist
Root.plist组成:
PreferenceSpecifiers 包含Setting页面中的子项
Strings Filename 指定多语言环境下的strings文件对应语言环境生效
StringsTable 指定strings文件直接生效
PreferenceSpecifiers
包含的子项:
Control type |
Description |
---|---|
Text field |
The text field type displays a title (optional) and an editable text field. You can use this type for preferences that require the user to specify a custom string value. The key for this type is |
Title |
The title type displays a read-only string value. You can use this type to display read-only preference values. (If the preference contains cryptic or nonintuitive values, this type lets you map the possible values to custom strings.) The key for this type is |
Toggle switch |
The toggle switch type displays an ON/OFF toggle button. You can use this type to configure a preference that can have only one of two values. Although you typically use this type to represent preferences containing Boolean values, you can also use it with preferences containing non-Boolean values. The key for this type is |
Slider |
The slider type displays a slider control. You can use this type for a preference that represents a range of values. The value for this type is a real number whose minimum and maximum value you specify. The key for this type is |
Multivalue |
The multivalue type lets the user select one value from a list of values. You can use this type for a preference that supports a set of mutually exclusive values. The values can be of any type. The key for this type is |
Group |
The group type is for organizing groups of preferences on a single page. The group type does not represent a configurable preference. It simply contains a title string that is displayed immediately before one or more configurable preferences. The key for this type is |
Child pane |
The child pane type lets the user navigate to a new page of preferences. You use this type to implement hierarchical preferences. For more information on how you configure and use this preference type, see Hierarchical Preferences. The key for this type is |
以下是一个Setting设置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>Sound</string> </dict> <dict> <key>Type</key> <string>PSToggleSwitchSpecifier</string> <key>Title</key> <string>Play Sound</string> <key>Key</key> <string>play_sound_preference</string> <key>DefaultValue</key> <false/> </dict> <dict> <key>Type</key> <string>PSToggleSwitchSpecifier</string> <key>Title</key> <string>3D Sound</string> <key>Key</key> <string>3D_sound_preference</string> <key>DefaultValue</key> <false/> </dict> <dict> <key>Type</key> <string>PSGroupSpecifier</string> <key>Title</key> <string>User Info</string> </dict> <dict> <key>Type</key> <string>PSTextFieldSpecifier</string> <key>Title</key> <string>Name</string> <key>Key</key> <string>user_name</string> </dict> <dict> <key>Type</key> <string>PSMultiValueSpecifier</string> <key>Title</key> <string>Experience Level</string> <key>Key</key> <string>experience_preference</string> <key>DefaultValue</key> <string>0</string> <key>Titles</key> <array> <string>Beginner</string> <string>Expert</string> <string>Master</string> </array> <key>Values</key> <array> <string>0</string> <string>1</string> <string>2</string> </array> </dict> <dict> <key>Type</key> <string>PSGroupSpecifier</string> <key>Title</key> <string>Gravity</string> </dict> <dict> <key>Type</key> <string>PSSliderSpecifier</string> <key>Key</key> <string>gravity_preference</string> <key>DefaultValue</key> <integer>1</integer> <key>MinimumValue</key> <integer>0</integer> <key>MaximumValue</key> <integer>2</integer> </dict> <dict> <key>Type</key> <string>PSGroupSpecifier</string> <key>Title</key> <string>Other</string> </dict> <dict> <key>File</key> <string>Other</string> <key>Type</key> <string>PSChildPaneSpecifier</string> <key>Title</key> <string>Other Setting</string> <key>Key</key> <string>other_setting</string> </dict> </array> <key>Strings Filename</key> <string>Root</string> </dict> </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>Sound</string> </dict> <dict> <key>Type</key> <string>PSToggleSwitchSpecifier</string> <key>Title</key> <string>Play Sound</string> <key>Key</key> <string>oplay_sound_preference</string> <key>DefaultValue</key> <false/> </dict> <dict> <key>Type</key> <string>PSToggleSwitchSpecifier</string> <key>Title</key> <string>3D Sound</string> <key>Key</key> <string>o3D_sound_preference</string> <key>DefaultValue</key> <false/> </dict> <dict> <key>Type</key> <string>PSGroupSpecifier</string> <key>Title</key> <string>User Info</string> </dict> <dict> <key>Type</key> <string>PSTextFieldSpecifier</string> <key>Title</key> <string>Name</string> <key>Key</key> <string>ouser_name</string> </dict> <dict> <key>Type</key> <string>PSMultiValueSpecifier</string> <key>Title</key> <string>Experience Level</string> <key>Key</key> <string>oexperience_preference</string> <key>DefaultValue</key> <string>0</string> <key>Titles</key> <array> <string>Beginner</string> <string>Expert</string> <string>Master</string> </array> <key>Values</key> <array> <string>0</string> <string>1</string> <string>2</string> </array> </dict> <dict> <key>Type</key> <string>PSGroupSpecifier</string> <key>Title</key> <string>Gravity</string> </dict> <dict> <key>Type</key> <string>PSSliderSpecifier</string> <key>Key</key> <string>ogravity_preference</string> <key>DefaultValue</key> <integer>1</integer> <key>MinimumValue</key> <integer>0</integer> <key>MaximumValue</key> <integer>2</integer> </dict> </array> <key>Strings Filename</key> <string>Root</string> </dict> </plist>
Setting是以Key Value的形式存储在NSUserDefaults中所以当Setting配置文件Key相同时会相互影响。
NSUserDefaults *userdefaults = [NSUserDefaults standardUserDefaults]; //[userdefaults valueForKey:(NSString *)];//根据Key获取数据
Setting变更同步注册通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(change) name:@"NSUserDefaultsDidChangeNotification" object:nil];