сохранить выбранные строки чеклиста в NSuserdefaults - PullRequest
5 голосов
/ 19 июня 2011

Я довольно новичок в Iphone, и это мой последний модуль в моем проекте. Следующий код отлично работает для выбора нескольких стран с помощью chekmark. По сути, мой вопрос заключается в том, как сохранить эти выбранные страны и снова показать галочки, когда вернётесь к этому виду. пожалуйста, помогите мне здесь ..

Мой метод didSelectRowAtIndexPath

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
 UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];

  if([selectedCell accessoryType] == UITableViewCellAccessoryNone) 
  {
    [selectedCell setAccessoryType:UITableViewCellAccessoryCheckmark];
    [selectedIndexes addObject:[NSNumber numberWithInt:indexPath.row]];
  }
  else
  {
    [selectedCell setAccessoryType:UITableViewCellAccessoryNone];
    [selectedIndexes removeObject:[NSNumber numberWithInt:indexPath.row]];
  }

  [tableView deselectRowAtIndexPath:indexPath animated:NO];
  [tableView reloadData];
}

Мой метод cellForRowAtIndexPath

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath    *)indexPath 
{
    HolidayAppDelegate *delegatObj = (HolidayAppDelegate *)[UIApplication sharedApplication].delegate;

    static NSString *CellIdentifier = @"CustomCell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

    }

    cell.textLabel.text=[delegatObj.allcountryarray objectAtIndex:indexPath.row];

    [cell setAccessoryType:UITableViewCellAccessoryNone];

    for (int i = 0; i < selectedIndexes.count; i++) 
    {
        NSUInteger num = [[selectedIndexes objectAtIndex:i] intValue];
        if (num == indexPath.row) {
            [cell setAccessoryType:UITableViewCellAccessoryCheckmark];
            break;
        }
    }

    return cell;
}

Спасибо

Ответы [ 2 ]

0 голосов
/ 05 октября 2017

Существует множество способов ее решения -

По моему мнению, вы должны создать NSMutableArray и array.cout, такие же, как ваши Country array, и изначально вы сохраняете default value в своемarray, в didSelectRowAtIndexPath необходимо изменить сохраненный default value в соответствии с UITableViewCellAccessoryCheckmark.

И после этого вы должны сохранить NSMutableArray в NSUserDefaults -

Ссылка - для сохранения массива в NSUserDefaults

0 голосов
/ 26 июня 2014

Если ваши данные не так велики, вы можете использовать NSUserDefaults.

Для сохранения данных:

NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults];

[userDefaults setObject: selectedIndexes forKey: @ "selection"];

[userDefaults синхронизировать];

Чтобы получить данные:

NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults];

[userDefaults objectForKey: @ "selection"]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...