2011-12-30 5 views
0

したがって、私は自分のUITableViewに多くのセルを持ち、セルに触れると、見えなくなった追加のセルにもダニが適用されます。複数のUITableViewCellAccessoryCheckmarkを単一のUITableCellタッチで適用する問題

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

      UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 

      if (cell.accessoryType == UITableViewCellAccessoryNone){ 
       [addPapersSelectedRowsArray addObject:[NSNumber numberWithInt:indexPath.row]]; 
       [cell setAccessoryType:UITableViewCellAccessoryCheckmark]; 

      } 
      else if (cell.accessoryType == UITableViewCellAccessoryCheckmark){ 
       cell.accessoryType = UITableViewCellAccessoryNone; 
       [addPapersSelectedRowsArray removeObject:[NSNumber numberWithInt:indexPath.row]]; 
      } 


    } 

- (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]; 

    } 



    NSDictionary *currentPapersSecltion = [papersDataDictionary objectAtIndex:indexPath.row]; 
    [[cell textLabel] setText:[currentPapersSecltion objectForKey:@"Title"]]; 



    return cell; 

} 

はまたviewDidLoad内の.plistからデータを引っ張っ::

//Load papers data from the local plist 
    papersDataDictionary = [[[NSDictionary alloc] initWithContentsOfFile:[[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"papers.plist"]] objectForKey:@"Rows"]; 

誰もが知っています私は、細胞が原因dequeueReusableCellWithIdentifier:

に再利用するか何かされているため、これはHERESに私のコードであると考えていこれを修正する方法は? ありがとうございました!あなたはセルが選択されているか否かに応じて、あなたのチェックマークを設定する必要がcellForRowAtIndexPathで

デックス

+0

cellForRowAtIndexPathデータソースメソッドのコード – 0x8badf00d

+0

@ 0x8badf00dが追加されました! – DexCurl

+1

あなたのcell.accessoryTypeはどこですか= UITableViewCellAccessoryNone;あなたのcellForRowAtIndexPathメソッドで? @samfisherの回答に従ってデリゲートメソッドを変更します。 – 0x8badf00d

答えて

-1
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 

    // add this line 
    cell.accessoryType = UITableViewCellAccessoryNone; 

    if (cell.accessoryType == UITableViewCellAccessoryNone){ 
     [addPapersSelectedRowsArray addObject:[NSNumber numberWithInt:indexPath.row]]; 
     [cell setAccessoryType:UITableViewCellAccessoryCheckmark]; 

    } 
    else if (cell.accessoryType == UITableViewCellAccessoryCheckmark){ 
     cell.accessoryType = UITableViewCellAccessoryNone; 
     [addPapersSelectedRowsArray removeObject:[NSNumber numberWithInt:indexPath.row]]; 
    } 
    //add this line as well 
    [tableView reloadData]; 
3

if ([addPapersSelectedRowsArray containsObject:[NSNumber numberWithInt:[indexPath row]]]) { 
     cell.accessoryType = UITableViewCellAccessoryCheckmark; 
    } 
    else { 
     cell.accessoryType = UITableViewCellAccessoryNone; 
    } 
return cell; 
関連する問題