IOS开发入门[iOS基础]应用程序设置
白羽 2019-07-10 来源 :网络 阅读 408 评论 0

摘要:本文将带你了解IOS开发入门[iOS基础]应用程序设置,希望本文对大家学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频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程