我有一个带有多个开关的tableView(每行一个开关)。 保存交换机状态的最佳方法是什么? 以及我应该以什么方法保存和检索数据?
答案 0 :(得分:1)
将数据保存在数组中,您还没有给出任何上下文,但是您可能正在使用某种类型的数组来驱动表中的行数和其余内容?
您可以使用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 :)中。