保存复选标记以前的动态单元格作为新的动态单元格添加到表格中

时间:2013-09-17 14:25:37

标签: uitableview

我有一个带动态单元格的UITableView。这些单元格是从GKSession peerID填充的。用户必须选择要连接的对等体(在这种情况下需要多个对等体)。在选择每个对等体时,我将其添加到数组中,然后在单元格上放置一个复选标记。只要在用户开始选择之前已在表中显示所有对等项,一切都正常工作。

但是,如果加载并选择了对等体,然后加载了另一个对等体,则第一个对等体的复选标记将被清除。我怎样才能保留这个?

这是UITableView代码(非常简单):

           NSString *cellIdentifier = @"dynamicCellType";
      UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

      if (cell == nil)
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];

      //load available servers
      NSString *peerID = [_PeerServer peerIDForConnectedClientAtIndex:indexPath.row];
      //cell.textLabel.font = [UIFont fontWithName:@"Helvetica Bold" size:17];
      cell.textLabel.text = [_PeerServer displayNameForPeerID:peerID];
      cell.selectionStyle = UITableViewCellSelectionStyleBlue;
      cell.userInteractionEnabled = YES;

    return cell;

我正在使用didSelectRowAtIndexPath进行选择/复选标记过程。这是代码:

     if (indexPath.section == 1){
    UITableViewCell* cell = [tableView cellForRowAtIndexPath:indexPath];
    if (cell.accessoryType == UITableViewCellAccessoryCheckmark){
        cell.accessoryType = UITableViewCellAccessoryNone;
        NSString *peerID = [_PeerServer peerIDForConnectedClientAtIndex:indexPath.row];
        [_selectedRemotes removeObject:peerID];
    }else
        if ([self connectedRemoteCount] < _numberOfJudges){
            cell.accessoryType = UITableViewCellAccessoryCheckmark;
            NSString *peerID = [_PeerServer peerIDForConnectedClientAtIndex:indexPath.row];
            [_selectedRemotes addObject:peerID];
        }
}

一切都是在iOS6中构建的,但是在7上运行。

谢谢!

1 个答案:

答案 0 :(得分:0)

找到了一个简单的解决方案....只需检查我的数组,该数组存储已经被选中的peerY并相应地应用复选标记。就在我面前!

if ([_selectedRemotes containsObject:peerID]){
             cell.accessoryType = UITableViewCellAccessoryCheckmark;
         }