iOS的settings bundle中开关button(Toggle Switch)取不到值的问题

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.

假设认为写的不好请多提意见,假设认为不错请多多支持点赞.谢谢! hopy ;)



在Xcode7.2中设置App的settings bundle时发现当bundle元素类型为Toggle Switch时,在App里取不到其变化值.

当中Toggle Switch设置例如以下:

在代码中以例如以下方式读取其值:

BOOL isWarp = [defaults boolForKey:kWarpDrive];
_warpDriveLabel.text = isWarp ?

@"Engaged":@"Disabled";

当中kWarpDrive定义例如以下:

#define kWarpDrive @"warp"

奇怪的是在settings中改变该开关button的状态,并不能在App中反应出来…确切的说,App中不管开关处在何种状态,总是读出NO值.

该App的settings bundle还有其它类型的元素,比方文本或多选栏,其它的元素都能够正常读出改变的值,只有Toggle Switch不能够.

遂改变策略在,App启动时先注冊其相应的值:

+(void)regDefaultsFromSettingsBundle{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSDictionary *dict = @{kWarpDrive:@(YES)};
    [defaults registerDefaults:dict];
    [defaults synchronize];
}

注意我仅仅注冊了kWarpDrive相应的值,其它的值并没有管.

然后在App中能够正常读出开关改变的值了,That’s All!!!

时间: 2024-10-11 04:06:53

iOS的settings bundle中开关button(Toggle Switch)取不到值的问题的相关文章

IOS – 添加Settings Bundle应用程序首选项到Settings应用程序

iPhone允许应用程序将自定义首选项添加到Settings应用程序中,开发者也可以以编程的方式指定这些设置,但添加到Settings应用程序的方式会提供一个友好的GUI.自定义首选项支持多种多样的数据交互风格,包括文本.密码.开关.滑块.以及二级选择页面.但这里应注意避免敏感信息. IOS应用程序存储信息的方式主要有三种: 1. 单例类NSUserDefaults:NSUserDefaults类的工作原理类似于NSDictionary,所有首选项都以键/值对的方式存储在NSUserDefaul

iOS之Settings.Bundle的应用

Settings.Bundle Settings.Bundle支持六种配置项分别是:Title,MultiValue,Group,Slider,ToggleSwitch,TextField . Title Type:配置类型,默认是TitleTitle:配置项显示的TitleIdentifier: 配置项的标识符,用来获取配置项的配置内容Default Value :配置项默认值 MultiValue Type:配置类型,默认Multi Value Title:配置项显示的标题Identifie

iOS 改变Search Bar中Scope Button中文本的颜色和字体

- (void)initSearchbar{ self.wineSearchBar.delegate = self; [self.wineSearchBar setScopeBarButtonTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor redColor], NSForegroundColorAttributeName, [UIFont fontWithName:GENERAL_FONT size:

iOS 在tableview的cell中的button上,添加选中状态的解答

大家都知道tableview的复用当然不知道的话可以个我留言或者在网上找  在这我就不多说了: 红色就是选中状态,但是这时候我们会发现往下拉当cell消失后出来新的cell中的button也是选中状态.话不多说下面上解决方法的代码! -(NSMutableArray *)boolArr{ //创建一个数组在这里数组中的NSNumber对象的下标是于 indexPath一一对应的这里我给他一百个根据自身的情况赋值 if (_boolArr==nil) { NSMutableArray *arr =

iOS 9应用开发教程之ios9中实现button的响应

iOS 9应用开发教程之ios9中实现button的响应 IOS9实现button的响应 button主要是实现用户交互的.即实现响应.button实现响应的方式能够依据加入button的不同分为两种:一种是编辑界面加入button实现的响应:还有一种是使用代码加入button实现的响应. 1.编辑界面加入button实现的响应 使用编辑界面加入button能够使用拖动的方式来实现button的响应,它也是最简单的一种实现响应的方式. [演示样例2-4]下面将实现轻拍button,改变主视图背景

Settings点击Location(位置)后右上角的开关button不会消失

MT8121/8382平台: 前几天又遇到一个源码的bug.在10寸平板上,进入设置界面,点击Location(位置)项,右上角Title处会显示一个开关button,用来开关定位服务.但点完Location项再点其他项的时候,button并不会消失.直到你点到Developer(开发者选项),再点击其他项那个button才会消失.Developer项本身右上角也有一个开关button. 于是很自然地想到,在切换设置项时,Location页面在退出时没有把button去掉. 结果一看果然是. 明

iOS:一个Cell中设置另外一个Cell中的button

场景: 子类化Cell中有button,拥有选中式样,点击第一个Cell中的button后,Cell一中的button获得选中式样,但是当点击Cell二中的button时,Cell一中的button选中式样依然存在,即同时存在两个选中的button. 解决方法: 在子类化的Cell中,定义一个 static UIButton *selectedButton; 必须是 static 静态变量. 然后在点击方法中, - (void)headerButtonClickAction:(UIButton

整合Settings.bundle显示版本信息

本文转载至 http://www.cocoachina.com/ios/20141103/10112.html iOS开发XCode版本管理Debug开发Tips 现在你有一个App,你同事的iPad用着用着出了点故障,Boss也说他的iPhone出了点问题,然后…你还有一些测试设备要跑…… 然后呢,这些设备都扔到了你这个苦逼程序员的手中善后,不过现在有个问题…你需要确认这些不同的设备都装了哪个该死的版本…是昨天弄个的TestFlight版本呢…还是上个星期在AppStore上发布的版本…或者是

iOS framework静态库中使用xib和图片资源详解

一.新建bundle 前2篇文章介绍了iOS 最新framework和.a静态库制作及使用全解   iOS 工程套子工程,主工程和framework工程或.a library静态库工程联调 我现在是在主工程的子工程里进行,当然你在创建静态库工程(子工程)的时候也可以.前面我是懒得再建工程了,接着现成主工程套子工程的项目. 1.按下图步骤操作 2.因为iOS框架中没有bundle,要选中OS X框架找到bundle,如下图 二.往bundle加资源文件 将工程中的资源文件都加入到刚刚建的bundl