gpt4 book ai didi

ios - UITableView、UISWitch 和 NSUserdefaults 组合?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:54:54 24 4
gpt4 key购买 nike

我有一个 UITableView。只有两个部分。在第一部分中只有两行。第一排只有一个开关。如果打开此开关,则会显示第二行。

现在我想保存开关的状态。为此,我使用了 NSUserDefaults,我已将其代码添加到与开关关联的操作中。开关(中断器)的 Action 如下所示:

-(IBAction)accioInterruptor:(id)sender{

NSUserDefaults *pepe=[NSUserDefaults standardUserDefaults];
[pepe setBool:interruptor.isOn forKey:@"interruptor"];
[pepe synchronize];

NSLog(@"Defaults interruptor %d", [[NSUserDefaults standardUserDefaults]boolForKey:@"interruptor"]);
NSLog(@"Interruptor isOn: %d", interruptor.isOn);


[infoAndSettingsTable beginUpdates];
[infoAndSettingsTable reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];
[infoAndSettingsTable endUpdates];}

我似乎能够通过在 cellForRowAtIndexPath 方法的单元格定义中添加状态来保存和恢复开关的状态,如下所示:

if (indexPath.section==0 && indexPath.row==0){

[cell.contentView addSubview:self.interruptor];
[interruptor setOn:[[NSUserDefaults standardUserDefaults] boolForKey:@"interruptor"]];



cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.accessoryType=UITableViewCellAccessoryNone;
cell.detailTextLabel.text=@"";
}

我在 viewDidLoad 和开关的操作中添加了 NSLogs,如下所示:

    NSLog(@" interruptor Defaults at startup %d", [[NSUserDefaults standardUserDefaults]boolForKey:@"interruptor"]);
NSLog(@"interruptor isOn? %d", interruptor.isOn);

现在,我在这里遇到的问题是,当开关保存为“ON”时,第一部分的第二行不会出现,它只显示带有开关的第一行。如果我关闭并再次打开开关,则可以。我也不明白的是,当开关保存为 ON 时,viewDidLoad 的 NSLogs 显示如下:

 interruptor Defaults at startup: 1
interruptor isOn:0

我不明白这怎么可能。显然,保存的状态是打开的,它显示为打开(蓝色)但是当被询问时,开关说它是关闭的。

虽然这很容易做到,但我已经度过了两个 hell 般的夜晚。任何帮助将不胜感激。

提前致谢!

最佳答案

好吧,没关系。我让它工作了。

我之前尝试添加

switch.on=[[NSUserdefaults standardUserDefaults] boolForKey:@"switch"];

viewDidLoad 但它没有工作。

事实证明,我在 switch.on 之前缺少了一个 self.

它现在就像一个魅力。

关于ios - UITableView、UISWitch 和 NSUserdefaults 组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8072269/

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