您的位置:首页 > 移动开发 > IOS开发

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

2016-02-25 12:16 621 查看

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

如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! 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中改变该开关按钮的状态,并不能在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!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: