iOS - UITableViewCell在选中后不显示复选标记

时间:2012-03-23 17:05:58

标签: ios uitableview

我正在尝试创建一个UITableView,它为选定的单元格添加一个复选标记,会发生的是它确实添加了复选标记但不是立即,它在我选择不同的行时显示。知道我怎么能让它瞬间完成?这是我的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Contact";

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

    NSLog(@"%@", [[self.contacts objectAtIndex:indexPath.row] valueForKeyPath:@"TwitterFriend.screen_name"]);
    cell.textLabel.text = [[self.contacts objectAtIndex:indexPath.row] valueForKeyPath:@"TwitterFriend.screen_name"];
    if ([self.selectedContacts containsObject:[self.contacts objectAtIndex:indexPath.row]]) {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    } else {
        cell.accessoryType = UITableViewCellAccessoryNone;
    }

    return cell;
}

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
    [self.selectedContacts addObject:[self.contacts objectAtIndex:indexPath.row]];
    [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationNone];
}

1 个答案:

答案 0 :(得分:2)

您似乎在tableView:didDeselectRowAtIndexPath中执行逻辑,但默认情况下,在单元格选择更改之前不会调用此方法。如果您将其放在tableView:didSelectRowAtIndexPath中(请注意名称略有不同),您只需点击单元格即可获得回调,并且附件视图应立即显示。