2011-10-17 52 views
0

我有一个tableView与多个开关(每行一个开关)。 什么是保存交换机状态的最佳方式? 和我应该保存和检索数据的方法?TableView与多个开关

回答

1

将数据保存到数组中,您尚未给出任何上下文,但是您可能正在使用某种数组来驱动表中的行数和其余内容?

您可以在cellForRowAtIndexPath:方法中设置开关的值。我假设如下:

  • 你已经有一个指针开关的cellForRowAtIndexPath方法中
  • 您已经创建可变数组与NSNumber对象

所以,当它充满你有你的手机,并即将返回它:

cellSwitch.on = [[switchValueArray objectAtIndex:indexPath.row] boolValue]; 

你的setter方法有点复杂,因为你所有的s女巫将会调用同样的行动方法。因此,你需要找出开关是哪一行,这将是您连接到方法值已更改

-(IBAction)switchValueChanged:(UISwitch*)sender 
{ 
    NSIndexPath *indexPath = [self.tableView indexPathForCell:(UITableViewCell*)[sender superview]]; 
    [switchValueArray replaceObjectAtIndex:indexPath.row withObject:[NSNumber numberWithBool:sender.on]]; 
} 
0

我认为最简单的方法之一是使用rowid作为键和值为bool的字典。

0

如果你希望它是通过应用持续开关启动你可以保存NSNumbers(numberWithBool :)的NSDictionary,或者如果表视图始终显示相同的选择,则将它们保存在NSUserDefaults(setBool:forKey :)中。