TableView有多个开关

时间:2011-10-17 12:17:02

标签: iphone ios

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

3 个答案:

答案 0 :(得分:1)

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

您可以使用cellForRowAtIndexPath:方法设置开关的值。我假设了以下内容:

  • 您已经有一个指向cellForRowAtIndexPath方法中的开关的指针
  • 您已经创建了可变数组,并用NSNumber个对象
  • 填充它

所以,当你有了你的牢房并准备归还它时:

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

您的setter方法稍微复杂一些,因为您的所有开关都将调用相同的操作方法。因此,您需要找出交换机所在的行。这将是您已连接到交换机的值已更改的方法

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

答案 1 :(得分:0)

我认为最简单的方法之一就是使用一个字典,其中rowid为键,值为bool。

答案 2 :(得分:0)

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