我有一个带有动态单元格的 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 上运行。
谢谢!