在NSuserdefaults中保存选定的cheklist行

时间:2011-06-19 09:01:42

标签: ios nsuserdefaults

我对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 :(得分:0)

如果你的数据不是那么大,你可以使用NSUserDefaults。

保存数据:

  

NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults];

     

[userDefaults setObject:selectedIndexes forKey:@&#34; selection&#34;];

     

[userDefaults synchronize];

获取数据:

  

NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults];

     

[userDefaults objectForKey:@&#34; selection&#34;]

答案 1 :(得分:0)

有很多方法可以解决它 -

根据我的说法,您必须创建与array.cout相同的Country arraydefault value,并且最初将array存储在didSelectRowAtIndexPath中, 在default value中,您必须根据UITableViewCellAccessoryCheckmark更改存储的NSMutableArray

之后,您必须将NSUserDefaults存储在var rigid = $("[name='Rigid']"); for (var j = 0; j < rigid.length; j++) { var selValueRigid = rigid[j].val(); if (selValueRigid === data.Rigid) { rigid[j].prop("checked", true); } else { rigid[j].prop("checked", false); } } -

Link - FOR SAVE ARRAY IN NSUserDefaults