gpt4 book ai didi

objective-c - 在应用程序启动时设置带有复选框的 BOOL 值?

转载 作者:行者123 更新时间:2023-12-03 17:13:53 26 4
gpt4 key购买 nike

这里对 ObjectiveC 和 Cocoa 还很陌生。希望这个问题的答案是直截了当的,但又不是那么明显。

我有一个简单的应用程序,它使用几个文本字段来设置几个字符串,在第三个文本字段中搜索字符串,结果显示在标签中。在本练习中,我使用 NSString-rangeOfString 方法。为了让事情变得更有趣,我决定添加一个复选框来进行区分大小写的搜索。

除了一件事之外,一切都很好:当应用程序启动时,复选框的状态和它“控制”的 BOOL 不同步。在 IB 中,复选框状态设置为打开。复选框操作的目标是方法 -(IBAction)checkboxChange,该方法评估复选框状态并相应地设置 BOOL。创建的 BOOL 值为 NO。

目前,我在 -awakeFromNib 中有一行代码,将 BOOL 设置为 YES。我所追求的是一种让复选框在加载应用程序时发送其操作的方法,以便将 BOOL 设置为与复选框状态一致。我想我可以在 AppDelegate 中使用 -applicationDidFinishLoading 但我不知道如何引用那里的复选框。我还以为我可以在该方法中设置 BOOL 的值,但即使我导入了定义 BOOL 的 .h 文件,XCode 仍提示标识符未定义。

如果相关的话,我的所有代码都在名为 AppController 的类中,并且我根本不使用默认的 AppDelegate。

感谢您的阅读和建议/解答!

最佳答案

NSUserDefaults 是您在应用程序启动时保留首选项状态的最佳 friend 。确保在进行更改后调用 synchronize 方法以将其保存到磁盘。在某些情况下,您可能希望延迟同步,直到应用程序即将进入后台状态。

NSUserDefaults Class Reference

示例代码:

#define USER_DEFAULT_CASE_SENSITIVE @"USER_DEFAULT_CASE_SENSITIVE"

-(IBAction)checkboxChange {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setBool:self.caseSensitive.on forKey:USER_DEFAULT_CASE_SENSITIVE];
[defaults synchronize];
}

要在应用程序再次启动时恢复它:

- (void)viewDidLoad {
[super viewDidLoad];
// other code

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
self.caseSensitive.on = [defaults boolForKey:USER_DEFAULT_CASE_SENSITIVE]
}

关于objective-c - 在应用程序启动时设置带有复选框的 BOOL 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12946464/

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