我正在尝试保存单元格的图像状态,以确定当用户退出应用程序或离开视图时,图像仍然保存。我在考虑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];
}
}
答案 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]];