gpt4 book ai didi

ios - 如何将 NSUserDefault 与多个首选项和 textColor 一起使用

转载 作者:行者123 更新时间:2023-11-29 04:28:52 25 4
gpt4 key购买 nike

我有一个 UISwitch,除其他外,它禁用 UITextfield。使用 NSUserDefaults 时,我管理开关以记住其当前状态(开/关)

NSString *const MyPrefKey =@"MyPrefKey";


[[NSUserDefaults standardUserDefaults]
setBool:[sender isOn]
forKey:MyPrefKey];

在 viewDidLoad 中调用开关状态

 BOOL switchState =[[NSUserDefaults standardUserDefaults]boolForKey:MyPrefKey];
[mySwitch setOn:switchState];

这很完美,UISwitch 的位置被记住了。

用于在开关更改时启用文本字段

我按照建议尝试:

 [[NSUserDefaults standardUserDefaults]
setObject:[NSNumber numberWithBool:[myTextField isEnabled]]
forKey:MyPrefKey];

并召回

BOOL mtf  =[[NSUserDefaults standardUserDefaults]boolForKey:MyPrefKey];
[myTextField setEnabled:mtf];

效果也很好。然而,当时只有其中一项有效。如何同时设置更多默认值?我必须制作多个 PrefKey 吗?或者可以将它们全部存储在同一个 prefKey 中吗?

最后我尝试使用 NSUserDefaults 更改文本颜色

[[NSUserDefaults standardUserDefaults]
setObject: [myTextField textColor]
forKey: MyPrefKey];

调用时会导致崩溃

UIColor*newColor= [[NSUserDefaults standardUserDefaults] objectForKey: EfloraSharePrefKey];
[myTextField setTextColor:newColor];

那么如何将 NSUserDefault 与 textColor 一起使用?我会感谢任何好的解决方案。

最佳答案

您只能将属性列表对象保存到 NSUserDefaults。你必须以某种方式序列化你的颜色。一个可能的解决方案:

CGFloat r, g, b, a;
[myTextField.textColor getRed:&r green:&g blue:&b alpha:&a];
NSNumber *rn, *gn, *bn, *an;
rn = [NSNumber numberWithFloat:r];
gn = [NSNumber numberWithFloat:g];
bn = [NSNumber numberWithFloat:b];
an = [NSNumber numberWithFloat:a];
NSDictionary *color = [NSDictionary dictionaryWithObjectsAndKeys:
rn, @"red",
gn, @"green",
bn, @"blue",
an, @"alpha",
nil];
[[NSUserDefaults standardUserDefaults] setObject:color forKey:@"TextColor"];

并检索它:

NSDictionary *color = [[NSUserDefaults standardUserDefaults] objectForKey:@"TextColor"];
NSNumber *rn, *gn, *bn, *an;
rn = [color objectForKey:@"red"];
...
UIColor *c = [UIColor colorWithRed:[rn floatValue]
green:[gn floatValue]
blue:[bn floatValue]
alpha:[an floatValue]];
textField.textColor = c;

如果你想真正优雅,你可以将其包装到一个类别中,甚至使 UIColor NSCoding 兼容(以便能够直接将其保留到用户默认 plist)。

关于ios - 如何将 NSUserDefault 与多个首选项和 textColor 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11975456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com