iOS开发:应用程序设置 Settings Bundle

好久没写写了,今天来记录下ios开发中的应用程序设置,本来项目就把设置面板计划进去了的,最初是想用一个plist自己读、取达到设置功能。后来看到了ios有专用的用于设置的东东,那就是Settings。

Settings Bundle

ios的设置用到了Settings Bundle,它严格来说是一个包,里面有用于设置的plist文件,可能还有些其他资源文件。

ios的应用程序的设置面板大致分为两种,一种是在公共的设置里,增加一项你的App的设置选项,这种有点类似与Windows的控制面板,另外一种就是自己程序中自己构建设置面板,这种就稍繁琐,需要自己构建UI,写读写项。

不过还好的是,ios提供了一个NSUserDefaults类,专门用于读写Settings Bundle,这样无论是自己构建设置或用公共设置面板就非常简单了。

在CSDN上一个blog上看到下面一个表格,列出了Settings可用的控件:

| 设置控件 | 类型| | —————-| |文本框| PSTextFieldSpecifier| |文字| PSTitleValueSpecifier| |开关控件| PSToggleSwitchSpecifier| |Slider| PSSliderSpecifier| |Multivalue| PSMultiValueSpecifier| |Group| PSGroupSpecifier| |子面板| PSChildPaneSpecifier.|

Settings Bundle的plist文件是以XML的形式储存的。

注:第二次编辑此文在11.26,更改标题把Settings改为Settings Bundle,感觉更为合适。

今天使劲看了下本章的所谓<实现逼真效果>一节,主要就是在原有的程序上添加了一个通知,单纯的理解有点类似Windows程序里的消息(Message),通知是ios提供的,当发送给APP的时候,APP作出适当的响应。

这里用到了[UIApplicationWillEnterForegroundNotification]这个通知,意思是当应用程序进入前台。

小贴一段代码:

UIApplication *app [UIApplication sharedApplication];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillEnterForeground:) name:UIApplicationWillEnterForegroundNotification object:app];

这段代码摘自《iOS 5 基础教程》 ,第12章中所提到的订阅通知,也是很重要的一个函数。

这个方法听到老师很好的用一句话解释:当app应用程序接收到[UIApplicationWillEnterForegroundNotification]这个通知时,在self类里面,触发执行applicationWillEnterForeground方法。

这里一共4个参数,下面一一解释:

addObserver:添加一个观察者,这里传递self,一个控制器类,是将要被通知的对象。

selector:选取一个方法,当接受到通知时触发。

name:通知名称,XCode给的。

object:从哪个对象中获取通知,如为nil,则任何方法,任何时候发布通知时都将会被接收。

警告:

  1. 在构建Root.plist的时候必须要为你的设置项设定[Key]是必须设定的,也用于代码中读写项,不给个值会无法显示,无法使用。
  2. 右键菜单中有一项[Show Raw Keys/Values],可以“更专业”地显示各选项