2011-07-05 27 views
0

UITableViewの選択項目を、裁断チェックボックスのNSMutableDictionaryに保存する必要があります。だから私は、次の手順を実行しますUITableView選択した項目を保存

NSMutableDictionary * selDict;// - instance variable 

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

     if ([selDict objectForKey:indexPath]) 
      [selDict setObject:[NSNumber numberWithBool:FALSE] forKey:indexPath]; 
     else 
      [selDict setObject:[NSNumber numberWithBool:TRUE] forKey:indexPath]; 

     [[self tableView]reloadData]; 

    } 

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

     static NSString *CellIdentifier = @"Cell"; 

     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
     if (cell == nil) { 
      cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
      [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 
     } 

     if ([selDict objectForKey:indexPath]) 
      cell.accessoryType = UITableViewCellAccessoryCheckmark; 
     else 
      cell.accessoryType = UITableViewCellAccessoryNone; 
     ... 

     return cell; 
    } 

しかし、それは唯一の項目がチェックされ、さ​​らに作業をdoes't設定です。

+0

あなたはそれ以上に動作しないとはどういう意味ですか?また、[[self tableView] reloadData]の代わりに、[[[self tableView] reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone] 'を使用するのがよいでしょう。(テーブル全体をリロードする際のポイントはありません) –

+0

チップをありがとう。それはまた私のために働く。 –

答えて

2

あなたは、オブジェクトが存在するかどうかをチェックするかしないあなたが今やっている

if ([[selDict objectForKey:indexPath] boolValue]) 

if ([selDict objectForKey:indexPath]) 

を変更したい場合があります。 nilのときは一度動作しますが、それ以降は動作しません。

関連する問題