Objective-C, iOS SDK, Как сохранить флажок UITableView Cell image - PullRequest
0 голосов
/ 27 февраля 2012

Я пытаюсь сохранить состояние изображения ячейки: когда пользователь выходит из приложения или покидает вид, изображение все еще сохраняется.Я думаю 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 ]

3 голосов
/ 27 февраля 2012

Это действительно зависит от того, сколько ячеек у вас есть, что вы пытаетесь сохранить содержимое.Если их несколько, в NSUserDefaults это не составляет особого труда, но если их намного больше, возможно, Core Data будет лучшим решением для вас.

Если вы хотите использовать NSUserDefaults, вы, вероятно, захотите установитьтам есть BOOL, чтобы указать, включен ли флажок (поскольку у вас есть только два состояния).Итак:

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

Надеюсь, это поможет.

1 голос
/ 27 февраля 2012

Я бы, вероятно, использовал 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]];
...