摘要:本文将带你了解IOS开发入门[iOS基础]应用程序设置,希望本文对大家学IOS有所帮助。
本文将带你了解IOS开发入门[iOS基础]应用程序设置,希望本文对大家学IOS有所帮助。
关于设置与配置
1]设置 :应用之外的一个应用
2]配置:应用内开辟的一块功能
对于一个应用,如果设置的时候需要先退出的话,一般情况属于设置,不需要退出的话则为配置(例如:游戏的音响开启属于配置 )
设置
对于设置与配置有个大概的了解之后,接下来就说一下如何给一个应用添加“设置”的相关内容
应用程序设置包(Settings Bundle)
1、创建
(1)先创一个YCF_Test的工程
(2)File -> New -> New -> iOS -> Resource -> Settings Bundle -> next -> create :操作完得到Settings.bundle,如下:
Root.Strings内容:
?1234"Group" = "Group";"Name" = "Name";"none given" = "none given";"Enabled" = "Enabled";
Root.plist内容:
2、显示详细内容
选择图一的Settings.bundle -> Show in Finder ->选中Finder中的Settings.bundle -> 显示包内容
3、添加文件或图片
(1)显示详细内容
(2)将文件或图片拖进即可
运行看效果:
点击YCF_Test可以看到:
设置
下面进行“设置”的添加,也就是对图二中的Preference Items内容修改成我们所需要的:
将会涉及6种类型:
Group 、 Multi Value 、 Slider 、 Text Field 、Title 、 Toggle Switch
1、PSGroupSpecifier – 相当于tableView的header
(1)应该放在该组最前面
(2)如果添加的标题前面没有任何分组的信息,则默认为一个分组
(3)可以通过两种方式:
方式一:
vcq9tv6jujwvcD4NCjxwcmUgY2xhc3M9"brush:java;">
Type
PSGroupSpecifier
Title
账号
2、PSTextFieldSpecifier
方法一:
为什么要设置Identifier呢?
下面获取设置信息时,我们将通过Identifier来区分
方法二:
?123456789101112131415161718192021222324252627282930313233343536<dict> <key>Type</key> <string>PSTextFieldSpecifier</string> <key>Title</key> <string>用户名</string> <key>Key</key> <string>name_preference</string> <key>KeyboardType</key> <string>Alphabet</string> <key>IsSecure</key> <false> <key>DefaultValue</key> <string></string> <key>AutocorrectionType</key> <string>None</string> <key>AutocapitalizationType</key> <string>None</string></false></dict><dict> <key>Type</key> <string>PSTextFieldSpecifier</string> <key>Title</key> <string>密码</string> <key>Key</key> <string>password_preference</string> <key>AutocapitalizationType</key> <string>None</string> <key>AutocorrectionType</key> <string>No</string> <key>KeyboardType</key> <string>Alphabet</string> <key>IsSecure</key> <true> <key>DefaultValue</key> <string></string></true></dict>
3、其他的具体操作就不详说
PSToggleSwitchSpecifier
PSSliderSpecifier
PSMultiValueSpecifier
PSChildPaneSpecifier
PSTitleValueSpecifier
?123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172<dict> <key>Type</key> <string>PSGroupSpecifier</string> <key>Title</key> <string></string></dict><dict> <key>Type</key> <string>PSToggleSwitchSpecifier</string> <key>Title</key> <string>每月流量控制</string> <key>Key</key> <string>enable_preference</string> <key>DefaultValue</key> <true></true></dict><dict> <key>Type</key> <string>PSGroupSpecifier</string> <key>Title</key> <string>每月流量控制(GB)</string></dict><dict> <key>Type</key> <string>PSSliderSpecifier</string> <key>Key</key> <string>slider_preference</string> <key>DefaultValue</key> <real>0.5</real> <key>MinimumValueImage</key> <string>Menu_Download@2x.png</string> <key>MaximumValueImage</key> <string>Menu_Icon_Message_Point@2x</string> <key>MinimumValue</key> <integer>0</integer> <key>MaximumValue</key> <integer>1</integer></dict><dict> <key>Type</key> <string>PSGroupSpecifier</string> <key>Title</key> <string></string></dict><dict> <key>Type</key> <string>PSMultiValueSpecifier</string> <key>Values</key> <string>你的服务器</string> <string>我的服务器</string> </array> <key>Title</key> <string>服务器</string> <key>Key</key> <string>multiValue_preference</string> <key>DefaultValue</key> <string>可选服务器</string> <key>Titles</key> <string>本地服务器</string> <string>远程服务器</string> </array></dict><dict> <key>Type</key> <string>PSChildPaneSpecifier</string> <key>Title</key> <string>通知</string> <key>File</key> <string>Notification</string></dict>
从上面看到PSMultiValueSpecifier的Values和Titles内容很像
?1234567891011<key>Values</key> <string>你的服务器</string> <string>我的服务器</string></array> <key>Titles</key> <string>本地服务器</string> <string>远程服务器</string></array>
Values的内容是获取设置内容是看到的信息
Titles的内容是提供的选项中可见的
PSMultiValueSpecifier 与 PSChildPaneSpecifier :
PSMultiValueSpecifier :多选一
“通知”的点击后跳转到另一个界面,该界面的设置用Notification.plist
(1)创建Notification.plist
(2)添加内容
复制Root.plist中的:
?123<key>StringsTable</key> <string>Root</string> <key>PreferenceSpecifiers</key>
然后补全为:
?12345678910111213141516171819202122232425262728293031<key>StringsTable</key> <string>Root</string> <key>PreferenceSpecifiers</key> <dict> <key>Title</key> <string></string> <key>Type</key> <string>PSGroupSpercifier</string> </dict> <dict> <key>DefaultValue</key> <true> <key>Key</key> <string>sound_enabled_preference</string> <key>Title</key> <string>声音</string> <key>Type</key> <string>PSToggleSwitchSpecifier</string> </true></dict> <dict> <key>DefaultValue</key> <true> <key>Key</key> <string>vibrate_enabled_preference</string> <key>Title</key> <string>振动</string> <key>Type</key> <string>PSToggleSwitchSpecifier</string> </true></dict> </array>
看一下运行效果:
读取设置内容
// 根据要求搭建UI
?1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253// Created by 阳丞枫 on 16/10/27.// Copyright ? 2016年 chengfengYang. All rights reserved.// #import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutlet UILabel *password;@property (weak, nonatomic) IBOutlet UILabel *username;@property (weak, nonatomic) IBOutlet UILabel *clearCache;@property (weak, nonatomic) IBOutlet UILabel *flowermeter;@property (weak, nonatomic) IBOutlet UILabel *serverName;@property (weak, nonatomic) IBOutlet UILabel *notiSound;@property (weak, nonatomic) IBOutlet UILabel *notiVibrate; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; } - (void)viewWillAppear:(BOOL)animated { [self getData:nil];} - (IBAction)getData:(id)sender { NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults]; self.username.text = [userDefault stringForKey:@"name_preference"]; self.password.text = [userDefault stringForKey:@"password_preference"]; if([userDefault boolForKey:@"enable_preference"]) { self.clearCache.text = @"YES"; } else { self.clearCache.text = @"NO"; } self.flowermeter.text = [NSString stringWithFormat:@"%.2fGB", [userDefault doubleForKey:@"slider_preference"]]; self.serverName.text = [userDefault stringForKey:@"multiValue_preference"]; if([userDefault boolForKey:@"sound_enabled_preference"]) { self.notiSound.text = @"YES"; } else { self.notiSound.text = @"NO"; } if([userDefault boolForKey:@"vibrate_enabled_preference"]) { self.notiVibrate.text = @"YES"; } else { self.notiVibrate.text = @"NO"; } } @end
(1)删除模拟器的应用再运行
(2)进行有关设置
(3)点击按钮“查看修改后的按钮”
大致流程如上
问题
未进行设置前,所有BOOLEAN类型的值都输出位NO,但是很明显所有PSToggleSwitchSpecifier的DefaultValue都设置为YES
有没有可能返回nil而被初始化为NO呢?
?1234(lldb) po [userDefault boolForKey:@"enable_preference"]NO (lldb)
明显返回值就是NO
也就是说默认设置只能被“设置”所识别,而获取默认设置信息时是无效的
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之IOS频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号