У меня есть UITableView
.Есть только два раздела.В первом разделе только две строки.Первый ряд содержит только переключатель.Если этот переключатель включен, появляется второй ряд.
Теперь я хочу сохранить состояние переключателя.Для этого я использую NSUserDefaults
, какой код я добавил к действию, связанному с коммутатором.Действие переключателя (прерывателя) выглядит следующим образом:
-(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=@"";
}
Я добавил NSLogs в viewDidLoad и в действиях коммутатора, которые выглядят так:
NSLog(@" interruptor Defaults at startup %d", [[NSUserDefaults standardUserDefaults]boolForKey:@"interruptor"]);
NSLog(@"interruptor isOn? %d", interruptor.isOn);
Теперь проблема в том, что когдаПереключатель сохраняется как «ВКЛ», второй ряд в первом разделе не отображается, он показывает только первый ряд с переключателем.Если я выключу и снова включу, то все в порядке.Что я также не понимаю, так это то, что NSLogs в viewDidLoad, когда переключатель сохраняется как ON, показывают это:
interruptor Defaults at startup: 1
interruptor isOn:0
, который я не могу понять, как это возможно.По-видимому, сохраненное состояние включено, оно отображается как ВКЛ (синий цвет), но когда его спрашивают, коммутатор говорит, что он выключен.
Я думал, что это было бы легко сделать, но у меня было дваадские ночиЛюбая помощь будет высоко ценится.
Заранее спасибо!