Objective-C,iOS SDK,如何保存UITableView Cell图像复选标记

时间:2012-02-26 22:00:37

标签: objective-c ios uitableview nsuserdefaults

我正在尝试保存单元格的图像状态,以确定当用户退出应用程序或离开视图时,图像仍然保存。我在考虑NSUserDefaults,最好的方法是什么? 感谢。

目前我有这个:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath;
{

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
cell.selectionStyle = UITableViewCellSelectionStyleNone;

if (cell.imageView.image == [UIImage imageNamed:@"checkboxfull.png"]){
    cell.imageView.image = [UIImage imageNamed:@"checkboxblank.png"];
}else if(cell.imageView.image == [UIImage imageNamed:@"checkboxblank.png"])

{
    cell.imageView.image = [UIImage imageNamed:@"checkboxfull.png"];
   // [alert show];
}
}

2 个答案:

答案 0 :(得分:3)

这实际上取决于您尝试保存内容的单元格数量。如果只是少数,那么在NSUserDefaults中做的并不是什么大不了的事,但如果它还有很多,那么Core Data对你来说可能是更好的解决方案。

如果你想使用NSUserDefaults,你可能想在那里设置一个BOOL来指示复选框是打开还是关闭(因为你只有两个状态)。所以:

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"someUniqueIdentifier"];

希望这有帮助。

答案 1 :(得分:1)

我可能会使用NSUserDefaults做一些事情,但我不会单独保存它们。我可能会将每个单元格存储在一个数组中。这将使保存多个单元格变得更加容易。

NSMutableArray *checkState = [[NSArray alloc] init];
if([cell.imageView.image highlighted]) {
   [checkState addObject:[NSNumber numberWithBool:YES]];
} else
   [checkState addObject:[NSNumber numberWithBool:NO]];

Then when you load your table:
NSArray cellState = [NSUserDefaults standardDefaults] objectForKey:@"yourSavedKey"];
[cell.imageView.image setHighlighted:[cellState objectAtIndex:indexPath.row]];